Pro Scholar Workspace
A skill template for scientific workflows. Streamlines development with pre-configured patterns and best practices.
Pro Scholar Workspace
Organize academic research workflows including paper management, note-taking, citation tracking, and knowledge synthesis. This skill covers building personal knowledge bases from research papers, maintaining reading lists, cross-referencing findings, and producing research summaries.
When to Use This Skill
Choose Pro Scholar Workspace when you need to:
- Build and maintain an organized research paper library with notes and tags
- Track reading progress across multiple research topics simultaneously
- Synthesize findings from multiple papers into structured knowledge bases
- Generate annotated bibliographies and research progress reports
Consider alternatives when:
- You need citation management for writing papers (use Zotero or BibTeX)
- You need systematic literature review methodology (use Literature Review Complete)
- You need collaborative writing with co-authors (use Overleaf or Google Docs)
Quick Start
pip install pandas pyalex python-dateutil
import pandas as pd from datetime import datetime import json class ScholarWorkspace: def __init__(self, workspace_path="research_workspace.json"): self.path = workspace_path self.papers = [] self.topics = {} self.notes = {} self.load() def load(self): try: with open(self.path, "r") as f: data = json.load(f) self.papers = data.get("papers", []) self.topics = data.get("topics", {}) self.notes = data.get("notes", {}) except FileNotFoundError: pass def save(self): with open(self.path, "w") as f: json.dump({ "papers": self.papers, "topics": self.topics, "notes": self.notes }, f, indent=2, default=str) def add_paper(self, title, doi, authors, year, tags=None): paper = { "id": len(self.papers) + 1, "title": title, "doi": doi, "authors": authors, "year": year, "tags": tags or [], "status": "unread", "added": datetime.now().isoformat(), "notes": "" } self.papers.append(paper) self.save() return paper["id"] def add_note(self, paper_id, note, section="general"): key = str(paper_id) if key not in self.notes: self.notes[key] = [] self.notes[key].append({ "section": section, "content": note, "timestamp": datetime.now().isoformat() }) self.save() def get_reading_list(self, status="unread", tag=None): filtered = [p for p in self.papers if p["status"] == status] if tag: filtered = [p for p in filtered if tag in p.get("tags", [])] return pd.DataFrame(filtered) ws = ScholarWorkspace() ws.add_paper( "Attention Is All You Need", "10.48550/arXiv.1706.03762", "Vaswani et al.", 2017, tags=["transformers", "nlp", "attention"] )
Core Concepts
Workspace Organization
| Component | Purpose | Structure |
|---|---|---|
| Paper Library | Store paper metadata and DOIs | Searchable, tagged collection |
| Reading Queue | Track reading progress | Unread → In Progress → Read |
| Topic Maps | Group papers by research theme | Hierarchical topic trees |
| Notes | Capture insights per paper | Section-tagged annotations |
| Syntheses | Cross-paper summaries | Topic-level knowledge documents |
Research Synthesis
def synthesize_topic(workspace, topic_tag): """Generate a synthesis of papers on a specific topic.""" papers = [p for p in workspace.papers if topic_tag in p.get("tags", [])] synthesis = { "topic": topic_tag, "paper_count": len(papers), "year_range": f"{min(p['year'] for p in papers)}-{max(p['year'] for p in papers)}", "papers": [] } for paper in sorted(papers, key=lambda p: p["year"]): paper_notes = workspace.notes.get(str(paper["id"]), []) key_findings = [n["content"] for n in paper_notes if n.get("section") == "findings"] synthesis["papers"].append({ "title": paper["title"], "year": paper["year"], "key_findings": key_findings, "status": paper["status"] }) return synthesis
Configuration
| Parameter | Description | Default |
|---|---|---|
workspace_path | Local storage file path | "research_workspace.json" |
auto_save | Save after each operation | true |
dedup_by | Deduplication field | "doi" |
default_status | Initial paper status | "unread" |
export_format | Export format for bibliographies | "bibtex" |
max_tags_per_paper | Maximum tags allowed per paper | 10 |
Best Practices
-
Tag papers with both broad and specific topics — Use hierarchical tags like
["ml", "ml/transformers", "ml/transformers/vision"]. This enables both broad topic summaries and narrow sub-topic exploration without duplicating papers across categories. -
Write notes immediately after reading — Capture key findings, methodology critiques, and connections to other papers within 24 hours of reading. Delayed notes lose the nuance and insights that emerge during active reading.
-
Track paper status consistently — Use a clear pipeline:
unread → reading → read → synthesized. This reveals bottlenecks (50 unread papers means you're adding faster than reading) and ensures no paper falls through the cracks. -
Cross-reference papers within notes — When a finding in Paper A contradicts or extends Paper B, note the connection explicitly. These cross-references form the basis of literature review sections and reveal research gaps.
-
Generate weekly research digests — Summarize papers read that week, key insights, and questions for follow-up. Weekly digests create a searchable record of your intellectual journey and highlight patterns across papers.
Common Issues
Paper library becomes too large to navigate — With 500+ papers, flat tag browsing is overwhelming. Implement topic hierarchies and use the synthesis function to create topic-level summaries. Archive papers more than 5 years old that aren't actively referenced.
Notes scattered across multiple tools — Consolidate all research notes into the workspace rather than splitting between paper annotations, separate documents, and meeting notes. A single searchable repository prevents knowledge loss.
Duplicate papers from different sources — The same paper may be added from different databases with slightly different titles or metadata. Deduplicate by DOI first, then by title similarity. Run deduplication after bulk imports.
Reviews
No reviews yet. Be the first to review this template!
Similar Templates
Full-Stack Code Reviewer
Comprehensive code review skill that checks for security vulnerabilities, performance issues, accessibility, and best practices across frontend and backend code.
Test Suite Generator
Generates comprehensive test suites with unit tests, integration tests, and edge cases. Supports Jest, Vitest, Pytest, and Go testing.
Pro Architecture Workspace
Battle-tested skill for architectural, decision, making, framework. Includes structured workflows, validation checks, and reusable patterns for development.