AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Deeppapernote

skill-917dhj-deeppapernote-deeppapernote · by 917Dhj

Generate a high-quality deep-reading note for a single paper and write it into an Obsidian-style vault. Use when the user gives a paper title, DOI, URL, arXiv ID, Zotero item, or local PDF and wants a polished Markdown note with strong structure, evidence-based analysis, and figure placeholders.

No reviews yet
0 installs
0 views
view→install

Install

$ agentstack add skill-917dhj-deeppapernote-deeppapernote

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-917dhj-deeppapernote-deeppapernote)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Deeppapernote? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

DeepPaperNote

Use this skill when the user wants one outcome:

  • read one paper carefully
  • generate a high-quality Markdown note
  • save the note into an Obsidian-style vault when configured, or into the current workspace when no vault is configured

Chinese trigger examples:

  • 给这篇论文生成深度笔记
  • 写一篇高质量论文精读笔记
  • 把这篇文章整理成 obsidian 笔记
  • 读这篇论文并生成 md 笔记

This skill is intentionally narrow:

  • it handles one paper at a time
  • it does not update daily reading lists
  • it does not treat a shallow abstract rewrite as a successful output
  • it does not split the public entrypoint into separate setup, troubleshooting, or start commands

Core Standard

The finished note must be more than a summary. It should reconstruct the paper's argument:

  • what problem it solves
  • how the task is defined
  • what data or materials it uses
  • how the method or analysis actually works
  • what results matter most
  • what the paper does not prove
  • why the paper is worth keeping

Default writer persona:

  • a top-tier researcher or algorithm engineer
  • writing a replication-oriented lab note
  • not writing a popular-science explanation
  • assuming the reader can follow Python, PyTorch, training loops, and evaluation logic

The note must adapt to the paper type. Use the same base structure, but shift emphasis for AI methods, benchmarks, clinical studies, and humanities or social-science papers.

Workflow

Follow this order:

  1. resolve the paper identity
  2. collect metadata
  3. acquire the best available PDF
  4. extract canonical raw source text: *_raw_sections.jsonl, *_source_manifest.json, and optional derived *_full_text.md
  5. extract structural indexes and PDF assets
  6. plan figure placement
  7. build the full figure/table decision table
  8. build the manifest synthesis bundle
  9. have the model read the bundle plus raw sections and plan the note
  10. run grounding lint on the note plan before drafting from it
  11. have the model write the note
  12. lint the final note — if the lint output contains passes_style_gate: false, apply the Style Gate Enforcement rule before advancing to step 13, 14, or 15
  13. perform final_quality_review after lint passes
  14. perform final_readability_review after the quality review passes
  15. write into Obsidian

This is the required workflow for a normal single-paper note request, not a loose suggestion. Unless this skill explicitly marks a stage as optional, required stages must not be silently skipped, reordered into a shortcut, or treated as complete just because a partial artifact already exists.

Global no-short-circuit rule:

  • do not stop after only the early stages and present the workflow as finished
  • do not treat slowness, inconvenience, or temporary uncertainty as permission to bypass a required stage
  • do not replace the declared workflow with an improvised shortcut
  • if a required stage fails, only do one of three things:
  • retry that stage
  • enter a fallback that is explicitly allowed by this skill
  • stop and report which stage is blocked and which downstream required stages remain incomplete
  • do not describe the whole task as complete while required downstream stages are still pending

Completion-language rule:

  • say 笔记已完成 only when the required workflow is actually complete
  • say 已生成草稿 when drafting is done but lint, final readability review, or save is still pending
  • say 已通过校验 only when lint has actually been run and passed
  • say 已保存到 Obsidian only when the write step has actually succeeded
  • do not treat lint 已通过 as equivalent to 整篇笔记已经润色完成
  • if final readability review is still pending, explicitly say the draft passed script lint but has not finished final language review
  • if the workflow stopped early, name the current stage and the still-missing required stages instead of using completion language
  • lint is a floor, not the writing objective

Core Execution Contract

SKILL.md plus the generated synthesis_bundle.json must be enough to complete a normal note-generation run. Files under references/ are optional stage-specific deep dives, not a default reading checklist.

Non-negotiable rules:

  • evidence-first: draft from the synthesis bundle, source_manifest, raw sections, coverage metadata, explicit note_plan, and inspected paper evidence; never finish from title/abstract/headings alone
  • raw-source authority: for ordinary PDFs, *_raw_sections.jsonl and *_source_manifest.json are the canonical reading material; old top-N evidence buckets, truncated section_texts, and candidate_chunks are not model-facing writing inputs
  • fail-closed: if a usable PDF or sufficient evidence cannot be obtained after supported acquisition paths, stop and ask for better source material rather than producing a finished degraded note
  • model-first: scripts structure evidence, but the model must decide emphasis, contribution, mechanism, limitations, and final Chinese prose
  • explicit planning: before drafting, save a compact JSON note_plan such as .plan.json or *_note_plan.json; pass it to scripts/lint_note.py --plan-file ...
  • grounding gate: after the JSON note_plan exists, run scripts/lint_grounding.py --note-plan ... --source-manifest ... --bundle-json ... --figure-decisions ...; each substantive section must cite valid section_id values or valid page ranges
  • required structure: include the canonical required sections, with 原文摘要翻译 before 一句话总结 and a dedicated 创新点 section immediately after 原文摘要翻译
  • abstract translation: when abstract metadata exists, 原文摘要翻译 is a faithful Chinese translation of the original abstract, not a bilingual block and not the model's own summary
  • mechanism depth: method, framework, and system papers should include ### 机制流程 under 方法主线, normally as a 3 to 4 step numbered flow with input, operation, and output destination
  • placeholder-first figures: plan major figure/table placeholders first; replace one only when identity match and visual usability are both strong; otherwise keep the placeholder
  • final quality gates: lint is a floor; after lint passes, first run final_quality_review for analytical depth, then run final_readability_review for language polish, and rerun lint if either review edits the note
  • Obsidian-first save: if a vault is configured, treat it as the required target, create the paper-local images/ directory, and never present a fallback/workspace write as a successful vault save

Reference usage policy:

  • do not load every reference file by default
  • consult references/workflow.md only for detailed data contracts or pipeline debugging
  • consult references/evidence-first.md, references/deep-analysis.md, or references/final-writing.md only when the paper is complex or the draft is too shallow
  • consult references/figure-placement.md only for ambiguous figure/table placement or image replacement decisions
  • consult references/obsidian-format.md only for Markdown, vault, frontmatter, or reference-link formatting details
  • consult references/note-quality.md or references/paper-types.md only for final review or domain adaptation
  • consult references/metadata-sources.md only when metadata is incomplete, and references/architecture.md only for repository maintenance decisions

Tool and Source Priority

Prefer the strongest available source in this order:

  1. local PDF path given by the user
  2. local Zotero item and local Zotero attachment if available
  3. DOI and publisher metadata
  4. arXiv or open-access PDF sources
  5. Semantic Scholar or OpenAlex for metadata backfill

Before resolving the paper, actively check Zotero integration: attempt to call the Zotero MCP tool (for example, search for the paper title or list libraries). If the tool responds without error, Zotero is available and the local-library-first rule below applies. If the call fails or the tool is not present, record "Zotero not available" and proceed without it. Do not skip this check — the check itself determines whether local-library-first applies.

Local-library-first rule (applies only when the Zotero check above succeeds):

  • search the local Zotero library first using the paper title, DOI, or arXiv id
  • If Zotero finds the paper, treat that result as the canonical identity resolution step.
  • If the attachment path is not exposed by the integration, use scripts/locate_zotero_attachment.py with the attachment key and filename to find the local PDF under the user's Zotero storage.
  • If a local attachment path is available, pass it forward as the preferred PDF source.
  • If no local attachment is found, still use the library-resolved metadata to avoid title ambiguity, then fall back to network PDF acquisition only for the file itself.
  • Do not let a weaker title-only internet match override a confident local-library hit.

Output Rules

  • The default output is a Markdown note written into the Obsidian vault when configured.
  • Workspace fallback is allowed only when no Obsidian vault is configured at all.
  • Before using workspace fallback, you must ask the user: "I don't see an Obsidian vault configured. Do you have a vault path you'd like me to save this note to? If yes, please provide the path. If no, I'll save to the current workspace instead." Do not write anywhere until the user responds.
  • If an Obsidian vault is configured, DeepPaperNote must treat that vault as the required save target rather than silently switching output roots.
  • If the configured vault or its paper-local subdirectories are outside the current writable scope, DeepPaperNote must ask the user for permission escalation instead of downgrading to workspace output.
  • If the user refuses that permission escalation, DeepPaperNote must clearly report that the note has not been saved into Obsidian yet.
  • After such a refusal, DeepPaperNote may save to the workspace only if it asks again and receives explicit user consent for that fallback.
  • By default, each paper should be written into its own same-name folder, with the note and images stored together.
  • The note should never default to the bare Research/Papers root. Choose a domain folder first.
  • Domain selection should be conservative: prefer an existing domain folder in the user's vault when there is a reasonable match; only create a new domain folder when no existing domain fits well.
  • A normal note-generation request should complete in one pass: note text, figure placeholder decisions, image materialization when confident, and final save.
  • Do not stop after a text-only draft just to ask whether the user wants figures inserted. Finish the figure replacement decision inside the same task unless the user explicitly asked for text only.
  • Always create the paper-local images/ folder during final save, even if no high-confidence images were materialized.
  • The images/ folder is part of the required save protocol, not an optional cleanup step. If permission is missing, request it; do not skip the directory.
  • Do not present a workspace write as if the Obsidian save already succeeded.
  • The note must use real heading levels: #, ##, and ###.
  • Every final note must start with an Obsidian YAML properties block above the # title heading. Include at least a tags field with a papers/ value and useful aliases; include date, doi, or arxiv_id when known, and omit unavailable fields rather than inventing placeholders.
  • ## 核心信息 must be a fixed metadata block only. Use only these fields, in this order, as - 字段名: 值 bullets: 标题, 标题翻译, 作者, 机构, 发表时间, 发表渠道, DOI, arXiv, 论文链接, 代码 / 项目, 数据 / 资源, 论文类型. Omit unavailable fields; put any guide sentence, takeaway, or analysis in 一句话总结 or a later section instead.
  • The note should include 原文摘要翻译 near the beginning when abstract metadata is available, before 一句话总结.
  • When abstract metadata is available, 原文摘要翻译 should directly translate the original paper abstract into Chinese rather than restating it as your own summary.
  • The 原文摘要翻译 section itself should be Chinese-only; do not place English abstract sentences or English paragraph excerpts in that section.
  • Do not mix later judgments, innovation summaries, or hindsight explanations into 原文摘要翻译; keep it as the original abstract translated into Chinese.
  • The note should include a dedicated 创新点 section immediately after 原文摘要翻译 and before 一句话总结.
  • The 创新点 section should not be empty praise. It should enumerate the paper's actual innovations and briefly explain why each one matters.
  • High-quality notes should usually contain multiple meaningful ### subheadings in the technical sections when the paper is non-trivial.
  • The note must include figure/table placeholders for all major visuals rather than silently skipping them.
  • Every kept figure/table placeholder must appear directly under the most relevant analytical section named by its 建议位置; do not collect unresolved placeholders in catch-all sections such as 剩余图表占位 or Remaining figures.
  • Every kept figure/table placeholder must use the standard > [!figure] callout format with 建议位置, 放置原因, and 当前状态; do not use ordinary paragraph markers such as [图表占位 | Fig. 1], 图表占位:Table 2, or Figure Placeholder | Fig. 3.
  • Real images replace placeholders when they clearly match the corresponding paper figure/table and pass the visual-usability gate.
  • When inserting a real image, use the relative_markdown_embed from figure_table_decisions.json; final save with scripts/write_obsidian_note.py --figure-decisions ... copies the image into the paper-local images/ directory.
  • When a real image is inserted, render it as the Obsidian embed or Markdown image embed followed immediately by one italic caption line.
  • Do not keep a redundant > [!figure] placeholder callout for the same inserted real figure.
  • Figure captions in the note must preserve the original paper numbering such as Fig. 1 or Table 2.
  • If a figure/table candidate is marked usable and has a real image path, insert the real image. Do not keep a placeholder merely because the figure/table is lower priority, supplemental, already summarized in text, or less central than another inserted figure.
  • A kept placeholder is valid only when the image cannot be safely inserted because of a concrete visual defect, missing candidate, unresolved visual review, identity mismatch, contamination, or materialization/copy/write failure.
  • For usable_candidate or needs_visual_quality_check / review candidates, make the visual decision only after inspecting the actual candidate image file exposed by the pipeline. Record the concrete visual observation behind the decision. Do not claim manual visual review, visual inspection, or "no reliable insertable candidate" unless the candidate image was actually opened and inspected.
  • reject_visual_quality and asset_candidate_missing are fail-closed script states. They do not require manual visual review before keeping a placeholder or skipping insertion; treat them as automatic extraction outcomes unless you explicitly inspect or re-extract the source asset.
  • Do not misreport missing candidates as materialization failures: asset_candidate_missing, empty source_image_path, or no independent crop means the placeholder status should say no high-confidence image candidate was extracted. Use materialization/copy/write failure language only after a real chosen image asset failed to copy or write.
  • If a candidate crop contains another Figure/Table caption or a second figure body, treat that as contamination or lack of an independent crop; do not insert it and do not call it a clean usable candidate just because the target label is present.
  • When figure_table_decisions.json contains insert rows, pass it to scripts/write_obsidian_note.py --figure-decisions ...; the writer must copy those images into the paper-local images/ directory and refuse a note that does not reference the selected image path.
  • Do not use soft reasons such as keeping the note light, va

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.