aboutsummaryrefslogtreecommitdiffstats
path: root/.agents/skills/zotero-obsidian-bridge/references
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/references
downloadwww-main.tar.gz
www-main.zip
import live www.sillylaird.ca webrootHEADmain
Diffstat (limited to '')
-rw-r--r--.agents/skills/zotero-obsidian-bridge/references/COLLECTION-INVENTORY-SCHEMA.md49
-rw-r--r--.agents/skills/zotero-obsidian-bridge/references/LOCAL-ZOTERO-FALLBACK.md22
-rw-r--r--.agents/skills/zotero-obsidian-bridge/references/PAPER-NOTE-SCHEMA.md81
-rw-r--r--.agents/skills/zotero-obsidian-bridge/references/WORKFLOW.md83
4 files changed, 235 insertions, 0 deletions
diff --git a/.agents/skills/zotero-obsidian-bridge/references/COLLECTION-INVENTORY-SCHEMA.md b/.agents/skills/zotero-obsidian-bridge/references/COLLECTION-INVENTORY-SCHEMA.md
new file mode 100644
index 0000000..759803d
--- /dev/null
+++ b/.agents/skills/zotero-obsidian-bridge/references/COLLECTION-INVENTORY-SCHEMA.md
@@ -0,0 +1,49 @@
+# Collection Inventory Schema
+
+Use this note when a Zotero collection is imported or audited at collection scope.
+
+## Canonical path
+
+```text
+Knowledge/Zotero-Collection-{collection-slug}-Inventory.md
+```
+
+## Frontmatter
+
+```yaml
+---
+type: zotero-collection-inventory
+collection: Cross Subject
+collection_slug: cross-subject
+source: zotero
+coverage_expected: 16
+coverage_actual: 16
+updated: 2026-03-18T00:00:00Z
+---
+```
+
+## Required sections
+
+```markdown
+# Cross Subject Inventory
+
+## Coverage Summary
+- Expected items: 16
+- Canonical notes: 16 / 16
+
+## Item Mapping
+| Zotero Key | Item Title | Canonical Note | Status |
+|---|---|---|---|
+| ABCDEFGH | Example title | Papers/Example-Paper.md | covered |
+
+## Triage
+- fully covered
+- skipped or bridge-only notes
+- items that still need full notes
+```
+
+## Rules
+- Keep one durable inventory note per collection slug.
+- `Canonical Note` should use project-relative note paths.
+- `Status` should use a small vocabulary such as `covered`, `bridge-only`, `skipped`, `needs-review`.
+- Update coverage counts whenever the collection is batch-processed again.
diff --git a/.agents/skills/zotero-obsidian-bridge/references/LOCAL-ZOTERO-FALLBACK.md b/.agents/skills/zotero-obsidian-bridge/references/LOCAL-ZOTERO-FALLBACK.md
new file mode 100644
index 0000000..5bed8f5
--- /dev/null
+++ b/.agents/skills/zotero-obsidian-bridge/references/LOCAL-ZOTERO-FALLBACK.md
@@ -0,0 +1,22 @@
+# Local Zotero Fallback
+
+Use this runbook when the Zotero MCP transport is unavailable but the user still wants a collection-level pass.
+
+## Preconditions
+
+- A local `zotero-mcp` checkout or installed Python package is available.
+- The local environment can read metadata/fulltext without mutating the Zotero library.
+
+## Default fallback sequence
+
+1. Confirm that MCP transport is the failing layer, not the collection query itself.
+2. Switch to the local Python-backed path for metadata and fulltext retrieval.
+3. Continue creating or updating canonical paper notes.
+4. Run `verify_paper_notes.py` before closing the batch.
+
+## Report explicitly
+
+Always state:
+- that MCP transport failed,
+- that the workflow continued through local fallback,
+- what remained unavailable, if anything.
diff --git a/.agents/skills/zotero-obsidian-bridge/references/PAPER-NOTE-SCHEMA.md b/.agents/skills/zotero-obsidian-bridge/references/PAPER-NOTE-SCHEMA.md
new file mode 100644
index 0000000..1171aab
--- /dev/null
+++ b/.agents/skills/zotero-obsidian-bridge/references/PAPER-NOTE-SCHEMA.md
@@ -0,0 +1,81 @@
+# Zotero-Sourced Paper Note Schema
+
+## Frontmatter
+
+```yaml
+---
+type: paper
+project: project-slug
+title: "Paper Title"
+canvas_visibility: hidden
+authors:
+ - Author A
+ - Author B
+year: 2026
+venue: "NeurIPS"
+doi: "10.xxxx/xxxxx"
+url: "https://doi.org/..."
+citekey: "author2026paper"
+zotero_key: "ABCDEFGH"
+status: read
+keywords:
+ - subject-invariance
+ - contrastive-learning
+concepts:
+ - shared geometry
+methods:
+ - contrastive pretraining
+subfield: speech-transfer
+related_papers:
+ - "Papers/Another-Paper"
+linked_knowledge:
+ - "Knowledge/Literature-Overview"
+ - "Knowledge/Method-Families"
+argument_claims:
+ - "Shared geometry exists but is fragile"
+argument_methods:
+ - "Geometry-aware transfer"
+argument_gaps:
+ - "Still needs speech-specific validation"
+paper_relationships:
+ - "Papers/Another-Paper::complements"
+updated: 2026-03-16T00:00:00Z
+---
+```
+
+## Sections
+
+```markdown
+# Paper Title
+
+## Claim
+
+## Research question
+
+## Method
+
+## Evidence
+
+## Strengths
+
+## Limitation
+
+## Direct relevance to repo
+
+## Relation to other papers
+
+## Knowledge links
+
+## Optional downstream hooks
+- Writing:
+```
+
+## Rules
+
+- `related_papers` and `linked_knowledge` should prefer project-relative note paths.
+- `paper_relationships` should record explicit semantic edges only when they are stable enough to support graph construction.
+- `concepts` and `methods` may remain plain strings; do not create dedicated notes by default.
+- Keep `Direct relevance to repo` concrete and actionable.
+- Prefer one durable canonical note per paper; update in place instead of making sibling notes.
+- If the user asked for a full collection pass, normalize the schema across the entire covered set before closing the task.
+- Treat Zotero `webpage` items as acceptable inputs when attachment text or fulltext is still available and useful.
diff --git a/.agents/skills/zotero-obsidian-bridge/references/WORKFLOW.md b/.agents/skills/zotero-obsidian-bridge/references/WORKFLOW.md
new file mode 100644
index 0000000..605a408
--- /dev/null
+++ b/.agents/skills/zotero-obsidian-bridge/references/WORKFLOW.md
@@ -0,0 +1,83 @@
+# Zotero -> Obsidian Workflow
+
+## 1. Resolve the project
+
+1. Run the Obsidian project-memory detect flow.
+2. If the repo is bound, use its `Research/{project-slug}/` vault root.
+3. If not bound but clearly a research repo, bootstrap first.
+
+## 2. Read from Zotero
+
+Preferred read path per paper:
+1. `zotero_get_item_metadata`
+2. `zotero_get_item_fulltext`
+3. `zotero_get_annotations`
+4. `zotero_get_notes`
+
+Use metadata + abstract as the minimum fallback when PDF full text is unavailable.
+If the MCP transport path is broken but a local `zotero-mcp` source checkout is available, use the local Python fallback to call the same metadata/fulltext functions instead of aborting.
+Treat some Zotero `webpage` items as valid literature entries when they still expose meaningful metadata or fulltext.
+
+## 3. Create/update the canonical paper note
+
+Canonical destination:
+- `Papers/{normalized-title-or-citekey}.md`
+
+Update instead of duplicating when the note already exists.
+
+## 4. Detailed reading note requirements
+
+Each durable paper note should contain:
+- claim
+- research question / problem
+- method
+- evidence
+- strengths
+- limitation
+- direct relevance to repo
+- links to related papers and the best matching `Knowledge/` notes
+
+## 5. Synthesize the stable literature knowledge
+
+After a batch import, prefer agent-first synthesis into `Knowledge/`:
+1. update `Knowledge/Literature-Overview.md` when the batch yields a stable overview
+2. update `Knowledge/Method-Families.md` when method clusters are clear
+3. update `Knowledge/Research-Gaps.md` when open problems or tensions are stable enough to keep
+4. if the source is a named Zotero collection, update a durable inventory note that records:
+ - collection size,
+ - triage buckets,
+ - collection item -> canonical note mapping,
+ - current coverage such as `16 / 16`
+
+## 6. Refresh the default literature canvas
+
+After batch note creation or major note updates:
+1. rebuild `Maps/literature.canvas`
+2. ensure core paper notes have meaningful wikilinks into `Knowledge/`
+3. keep the graph lightweight and project-facing
+4. prefer semantic filtering and edge thinning over dense all-to-all paper links
+5. prefer `paper + claim + method + gap` argument-map structure for the main graph
+6. add `Maps/literature-main.canvas` only when a second lightweight display graph is genuinely useful
+
+## 7. Push downstream only when justified
+
+- during Zotero ingestion, default to `Papers/` plus `Knowledge/`
+- update `Writing/` only when the user asks for a review, comparison, or draft-facing synthesis
+- treat `Experiments/` and `Results/` as later project workflows, not default Zotero-import targets
+
+## 8. Verify before closing
+
+After batch ingestion or schema refactors:
+1. verify every expected paper has a canonical note
+2. verify `zotero_key` coverage matches the imported collection
+3. verify all covered notes use the same canonical section schema
+4. update the project `Daily/` note and project memory with what changed
+
+Recommended verification command:
+
+```bash
+python3 "${CLAUDE_PLUGIN_ROOT}/skills/zotero-obsidian-bridge/scripts/verify_paper_notes.py" \
+ --papers-dir "/absolute/path/to/Papers" \
+ --expected-zotero-keys "KEY1,KEY2,KEY3" \
+ --inventory-note "/absolute/path/to/Knowledge/Zotero-Collection-collection-slug-Inventory.md"
+```