aboutsummaryrefslogtreecommitdiffstats
path: root/.agents/skills/zotero-obsidian-bridge/SKILL.md
diff options
context:
space:
mode:
authorsillylaird <sillyfanboy@gmail.com>2026-09-03 00:33:59 +0000
committersillylaird <sillyfanboy@gmail.com>2026-09-03 00:33:59 +0000
commit898b52edcb47bcb3e9d6106e74ca73e74ea01e70 (patch)
tree85c6ee5ad58b860144551184d4cf86b560c62b91 /.agents/skills/zotero-obsidian-bridge/SKILL.md
downloadwww-main.tar.gz
www-main.zip
import live www.sillylaird.ca webrootHEADmain
Diffstat (limited to '.agents/skills/zotero-obsidian-bridge/SKILL.md')
-rw-r--r--.agents/skills/zotero-obsidian-bridge/SKILL.md112
1 files changed, 112 insertions, 0 deletions
diff --git a/.agents/skills/zotero-obsidian-bridge/SKILL.md b/.agents/skills/zotero-obsidian-bridge/SKILL.md
new file mode 100644
index 0000000..577e209
--- /dev/null
+++ b/.agents/skills/zotero-obsidian-bridge/SKILL.md
@@ -0,0 +1,112 @@
+---
+name: zotero-obsidian-bridge
+description: Use this skill when papers are collected in Zotero but the user wants detailed reading notes, project-linked literature synthesis, collection-wide paper-note coverage checks, and a connected knowledge map inside the bound Obsidian project knowledge base.
+version: 0.2.0
+---
+
+# Zotero Obsidian Bridge
+
+Bridge **Zotero as the literature source of truth** with **Obsidian as the durable project knowledge base**.
+
+Use this skill when the user wants to:
+- collect and organize papers in Zotero,
+- read papers from Zotero MCP,
+- create or update one detailed paper note per paper under Obsidian `Papers/`,
+- synthesize those notes into `Knowledge/` notes,
+- verify that a whole Zotero collection has complete canonical note coverage,
+- visualize the literature structure as a default Obsidian canvas.
+
+## Core stance
+
+- Zotero owns **collection, metadata, attachments, PDF full text, annotations**.
+- Obsidian owns **durable reading notes, project-facing literature knowledge, cross-note links, synthesis**.
+- Prefer **one canonical paper note per paper**.
+- Prefer **filesystem-first Obsidian notes**; do not require Obsidian MCP.
+- Use this as an **explicit, agent-first skill** for Zotero ingestion.
+- Prefer **`Papers/` + `Knowledge/`** as the default bridge targets.
+- Prefer **`Maps/literature.canvas`** as the default graph artifact.
+- Prefer a strong review schema inside each canonical paper note:
+ - `Claim`
+ - `Method`
+ - `Evidence`
+ - `Limitation`
+ - `Direct relevance to repo`
+ - `Relation to other papers`
+- Treat some Zotero `webpage` items as valid literature sources when they still expose useful metadata, attachment text, or fulltext.
+
+## Default workflow
+
+1. Resolve the current project via `$obsidian-project-memory`.
+ - If the repo is already bound, use the existing vault.
+ - If it looks like a research repo but is not bound, bootstrap it first.
+2. Read Zotero items from the target collection/query.
+ - If the user asked for a full collection pass, prefer full coverage over a small representative subset.
+ - If the transport path through MCP is failing but a local `zotero-mcp` source checkout or Python environment is available, use that local fallback to read metadata/fulltext instead of stopping the workflow.
+3. For each paper:
+ - get metadata,
+ - get full text when available,
+ - get annotations/notes when helpful,
+ - create or update the canonical paper note in `Papers/`.
+4. Add project-facing structure to each paper note:
+ - claim,
+ - research question,
+ - method,
+ - evidence,
+ - strengths,
+ - limitation,
+ - direct relevance to repo,
+ - relation to other papers,
+ - links to related papers and the best matching `Knowledge/` notes.
+5. Synthesize the batch into durable `Knowledge/` notes such as:
+ - `Knowledge/Literature-Overview.md`
+ - `Knowledge/Method-Families.md`
+ - `Knowledge/Research-Gaps.md`
+ only when the synthesis is stable enough to deserve a canonical note.
+6. If the request is collection-scoped, update a durable inventory note that records:
+ - collection size,
+ - item triage,
+ - item -> canonical note mapping,
+ - current coverage count such as `16 / 16`.
+ - use the canonical inventory path `Knowledge/Zotero-Collection-{collection-slug}-Inventory.md`.
+7. Refresh `Maps/literature.canvas`.
+ - Prefer semantic filtering and edge thinning.
+ - Prefer argument-map structure (`paper + claim + method + gap`) over dense all-to-all paper links.
+ - If needed, keep a second lightweight display canvas such as `Maps/literature-main.canvas`.
+8. If the user also wants writing deliverables, update:
+ - `Writing/literature-review.md`
+ - `Writing/comparison-matrix.md`
+9. Update today's `Daily/` note and repo-local project memory.
+10. Run a deterministic verification pass after batch ingestion or schema refactors.
+
+## Default outputs
+
+- `Papers/*.md` - one detailed reading note per paper
+- `Knowledge/*.md` - durable literature synthesis notes when the batch yields stable knowledge
+- `Knowledge/Zotero-Collection-{collection-slug}-Inventory.md` - when the source is a concrete Zotero collection and coverage tracking matters
+- `Maps/literature.canvas` - default visual literature graph
+- `Maps/literature-main.canvas` - optional lightweight presentation graph after semantic filtering
+- `Writing/literature-review.md` - when the user asks for synthesis
+- `Writing/comparison-matrix.md` - when cross-paper comparison is useful
+
+## Safety rules
+
+- Do not dump raw full text into Obsidian.
+- Do not create a new note if the canonical paper note already exists.
+- Do not create `Concepts/` or `Datasets/` trees by default.
+- Do not treat `Experiments/`, `Results/`, or `Writing/` as the default bridge target during Zotero ingestion.
+- Do not force every relationship into a new note; use frontmatter fields, sections, wikilinks, and `linked_knowledge` first.
+- If a relationship is uncertain, record it in the note body or `Daily/` instead of manufacturing durable structure.
+- Do not stop at a representative subset if the user explicitly asked to check **all** papers in a collection.
+- Do not leave schema drift unresolved across notes in the same collection after a batch pass.
+
+## References
+
+Load only what is needed:
+- `references/WORKFLOW.md` - end-to-end Zotero -> Obsidian procedure
+- `references/PAPER-NOTE-SCHEMA.md` - detailed paper note fields and sections
+- `references/COLLECTION-INVENTORY-SCHEMA.md` - canonical inventory note naming and mapping contract
+- `references/LOCAL-ZOTERO-FALLBACK.md` - local fallback runbook when MCP transport fails
+- `examples/example-collection-inventory.md` - example inventory note
+- `scripts/verify_paper_notes.py` - deterministic schema, zotero-key, and inventory consistency check
+- `../obsidian-literature-workflow/references/PAPER-NOTE-SCHEMA.md` - shared note schema
+- `../obsidian-literature-workflow/references/CANVAS-WORKFLOW.md` - default literature canvas refresh rules