بنقرة واحدة
add-paper
Download a paper, create metadata assets, and register it in the current task.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Download a paper, create metadata assets, and register it in the current task.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Interactively register one or more project metrics in meta/metrics/, grounded in project/description.md. Use during project setup or any time a new measurement needs to be tracked across tasks.
Create a new not-started task folder with task.json and task_description.md. Use when any skill or workflow needs to create a new task.
Run an interactive brainstorming session to review state and choose next actions.
One-shot interactive onboarding for a newly forked Glite ARF template. Shows the safety acknowledgement, installs dependencies, runs doctor.py, chains into create-project-description, provisions the paid services the project declared, then invokes the four meta/ sub-skills. Use once per fork, right after cloning.
Interactively scaffold a new asset type under meta/asset_types/, grounded in project/description.md. Creates a specification.md stub patterned on the built-in asset types. Use during project setup when a custom asset kind is needed; accept "none for now" to skip.
Interactively add one or more entries to meta/categories/, grounded in project/description.md. Use during project setup or any time a new cross-cutting tag is needed.
| name | add-paper |
| description | Download a paper, create metadata assets, and register it in the current task. |
Version: 2
Download a research paper, create its structured metadata (details.json) and canonical summary
document, and verify the result passes all paper asset checks.
$ARGUMENTS — any combination of: paper title, DOI, authors, year, arXiv ID. At least one of
title, DOI, or arXiv ID is required.Read before starting:
project/description.md — project goals (guides Main Ideas and Summary sections)meta/asset_types/paper/specification.md — the authoritative paper asset format (details.json
schema, summary document sections, folder layout)arf/styleguide/markdown_styleguide.md — formatting rules for the summary (100-char lines, *
bullets, heading hierarchy, etc.)Before assigning categories, run the category aggregator to get the full list of available categories with their descriptions:
uv run python -u -m arf.scripts.aggregators.aggregate_categories --format json
Parse $ARGUMENTS to extract available identifiers (title, DOI, authors, year, arXiv ID).
If a DOI is provided, generate the paper ID using the canonical script:
uv run python -u -m arf.scripts.utils.doi_to_slug "<doi>"
If no DOI is provided, search for the paper using available identifiers (title + authors + year) via CrossRef, Semantic Scholar, or OpenAlex to resolve the DOI. Then generate the paper ID as above.
If the paper has no DOI (preprints, working papers), construct the paper ID manually:
no-doi_<FirstAuthorLastName><Year>_<slug> where slug is 2-5 lowercase hyphenated words from the
title.
Check if this paper already exists in the project by running:
uv run python -u -m arf.scripts.aggregators.aggregate_papers --format json --detail short
Compare the resolved paper ID against every paper_id in the output. Also compare the resolved
DOI (if any) and the normalized title (lowercase, stripped punctuation) against the title
fields. If any match is found, stop and report that the paper is already in the project,
including the matching citation key and task that added it.
https://api.crossref.org/works/{doi}) to get: title, authors (with
affiliations and ORCID when available), year, journal/venue, publisher, abstract, publication
date.venue_type from the metadata: one of journal, conference, workshop, preprint,
book, thesis, technical_report, other.null when
uncertain — do not guess.institutions list entirely rather
than fabricating a country code. The author's institution field can still reference it — only
the top-level institutions array requires a country.Determine the current task ID from the task folder you are working in (e.g.,
0001-initial-survey). If running outside a task context, use manual and place files in
assets/paper/<paper_id>/.
Create the asset folder structure inside the task folder:
tasks/<task_id>/assets/paper/<paper_id>/
└── files/
Invoke the /download_paper skill with:
output_dir set to tasks/<task_id>/assets/paper/<paper_id>/files/Verify the download succeeded and the file passes basic validation (file exists, size > 10 KB, correct content type).
If the download fails, retry with alternate identifiers. If all attempts fail:
.gitkeep file in the files/ directory so git preserves the
empty directory.download_status to "failed" and download_failure_reason to a
detailed explanation (which sources were tried, what errors occurred, whether the paper is
paywalled, retracted, or simply not found online).tasks/<task_id>/assets/paper/<paper_id>/details.json following the schema in
meta/asset_types/paper/specification.md.spec_version — set to "3"paper_id — must match the folder name exactlydoi — original DOI with slashes, or nulltitle — full paper titleurl — landing page URL (not the PDF URL)pdf_url — direct PDF URL if known, or nulldate_published — ISO 8601 date as precise as known, or nullyear — publication year (integer)authors — ordered list with name, country, institution, orcid fields per authorinstitutions — deduplicated list of all institutions with countriesjournal — journal or conference namevenue_type — one of the allowed valuescategories — category slugs from the aggregator output. Read each category's description and
assign all categories whose scope matches the paper's topic. Use at least one category. If no
existing category fits, use an empty list — do not invent category slugs.abstract — full abstract textcitation_key — FirstAuthorLastNameYear format (e.g., Raganato2017); append a, b if
another paper by the same first author in the same year already exists in the projectsummary_path — canonical summary document path relative to the asset root; use "summary.md"
unless there is a strong reason to choose a different namefiles — relative paths to downloaded files (e.g.,
["files/raganato_2017_wsd-unified-eval.pdf"]); empty list [] when download faileddownload_status — "success" if file was downloaded, "failed" if all attempts faileddownload_failure_reason — null when download_status is "success"; detailed explanation
when "failed" (sources tried, errors encountered, paywall status)added_by_task — the current task ID, or "manual" if run outside a task contextdate_added — today's date in ISO 8601 formatnull for optional fields that cannot be determined. Do not fabricate values.Read the downloaded paper file. If PDF, extract and read the full text. If markdown or HTML, read directly.
If the paper could not be downloaded (download_status is "failed"), write the summary based
on the abstract and any information found during metadata collection. State this limitation
explicitly in the Overview section: "This summary is based on the abstract and publicly available
information only; the full paper could not be downloaded."
Create the summary document at the path declared by details.json summary_path. The default is
tasks/<task_id>/assets/paper/<paper_id>/summary.md. Use YAML frontmatter:
---
spec_version: "3"
paper_id: "<paper_id>"
citation_key: "<citation_key>"
summarized_by_task: "<task_id or manual>"
date_summarized: "<today>"
---
Write all 9 mandatory sections in this order. Follow the markdown style guide
(arf/styleguide/markdown_styleguide.md) throughout — 100-char line length, * bullets, proper
heading hierarchy, no skipped heading levels.
## Metadata — quick-reference block:
* File: `files/<filename>` (or "Download failed" if no file)
* Published: <year>
* Authors: <names with Unicode emoji country flags (e.g., 🇮🇹 🇺🇸 🇪🇸), not
markdown shortcodes like :flag_it:>
* Venue: <journal/conference>
* DOI: `<doi>` or N/A
## Abstract — the paper's abstract, copied verbatim from the original paper. Do not paraphrase,
reword, or summarize. If the paper could not be downloaded, copy the abstract from
details.json.
## Overview — 2-5 paragraphs in your own words describing what the paper does and finds. This
section must be written after reading the full paper, not just the abstract. It must cover
methodology, key results, and significance — information that goes well beyond what the paper's
abstract contains. Do NOT paraphrase or reword the paper's abstract — write an original overview
based on the full paper content. If the paper could not be downloaded, this must be explicitly
stated and the section should acknowledge its limitations. Minimum 100 words.
## Architecture, Models and Methods — detailed methodology: algorithms, architectures, training
procedures, hyperparameters, sample sizes, evaluation metrics, hardware specs. Include specific
numbers. Minimum 150 words. If the paper was not downloaded, write what can be inferred from the
abstract and note "Full methodology not available — paper not downloaded."
## Results — bullet points with specific quantitative values. Every metric the paper reports
that matters. Minimum 5 bullet points. Use bold for numbers such as \*\*71.3 F1\*\*. If the
paper was not downloaded and results are unavailable, write "Results not available — paper not
downloaded. Abstract reports: ."
## Innovations — named ### subheadings for each novel contribution. Explain what is new and
why it matters.
## Datasets — dataset names, sizes, languages, licenses, availability. For theoretical papers:
"This is a theoretical paper; no datasets were used."
## Main Ideas — bullet points of actionable takeaways for this project. Minimum 3 bullet
points.
## Summary — exactly 4 paragraphs:
NEVER fabricate results, metrics, or claims. If you cannot determine a value from the paper, write "Not reported in the paper."
NEVER use vague language ("good results", "improved significantly"). Use specific numbers.
Run the paper asset verificator with the task ID:
uv run python -u -m arf.scripts.verificators.verify_paper_asset "<paper_id>" \
--task-id "<task_id>"
If there are errors, fix them and re-run until all errors are resolved.
Warnings are acceptable but review each one — fix any that are easy to address (e.g., missing author countries that can be looked up).
tasks/<task_id>/assets/paper/<paper_id>/details.json exists with all required fields populated.tasks/<task_id>/assets/paper/<paper_id>/files/ contains at least one paper file when
download_status is "success", or is empty with download_failure_reason populated when
"failed".verify_paper_asset.py) passes with zero errors.citation_key in the canonical summary document frontmatter matches details.json.paper_id in both files matches the folder name.null for unknown values.- for bullet points in the canonical summary document. Use * per the markdown style
guide.download_status to "failed" without providing a download_failure_reason.