Skip to content
cccskills
FreePublished on GitHub

arxiv-monitor

Scheduled ArXiv paper monitor. Uses CronCreate to search configured keywords every 6 hours, deduplicates via MemoryRecord, and stores summaries in named memory for morning briefing integration.

The English summary is being prepared. Showing the original description.

Run score Not tested

See how to install

Files included (10)

  • SKILL.md5.0 KB
  • commands/arxiv-monitor.md113 B
  • hooks/post-execute.cjs179 B
  • hooks/pre-execute.cjs285 B
  • references/research-requirements.md1.2 KB
  • rules/arxiv-monitor.md1.1 KB
  • schemas/input.schema.json643 B
  • schemas/output.schema.json761 B
  • scripts/main.cjs542 B
  • templates/implementation-template.md742 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

<!-- Agent: nodejs-pro | Task: #12 | Session: 2026-03-08 -->

ArXiv Monitor Skill

Polls the ArXiv API every 6 hours for papers matching configured keywords. Deduplicates against previously seen papers, stores new summaries in named memory, and integrates with the morning briefing loop.


Setup

  1. Set ARXIV_KEYWORDS in .env:

    ARXIV_KEYWORDS=multi-agent systems,LLM reasoning,autonomous agents,RAG,tool use
    
  2. Start the monitor loop:

    /loop 6h Skill({ skill: 'arxiv-monitor' })
    

    Or via CronCreate for programmatic control:

    CronCreate({
      schedule: '0 */6 * * *',
      task: "Invoke Skill({ skill: 'arxiv-monitor' }) to fetch new ArXiv papers",
    });
    

Core Logic

Step 1: Load Keywords and Seen Papers

const keywords = (process.env.ARXIV_KEYWORDS || 'multi-agent systems,autonomous agents')
  .split(',')
  .map(k => k.trim());

// Load previously seen paper IDs from memory
const seenRaw = await readMemory('arxiv-seen-ids');
const seenIds = new Set(seenRaw ? JSON.parse(seenRaw) : []);

Step 2: Search ArXiv API for Each Keyword

Use Bash to query the ArXiv API (no authentication required):

# Search for papers from last 7 days matching a keyword
ENCODED=$(python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$KEYWORD")
curl -s "https://export.arxiv.org/api/query?search_query=all:${ENCODED}&sortBy=submittedDate&sortOrder=descending&max_results=10"

Or use the HuggingFace MCP paper_search tool if available:

// Via mcp__claude_ai_Hugging_Face__paper_search if available
// Falls back to curl-based ArXiv API otherwise

Step 3: Filter and Store New Papers

const newPapers = [];
for (const paper of fetchedPapers) {
  if (seenIds.has(paper.id)) continue; // Skip already processed
  seenIds.add(paper.id);
  newPapers.push({
    id: paper.id,
    title: paper.title,
    authors: paper.authors.slice(0, 3).join(', '),
    summary: paper.summary.slice(0, 300),
    published: paper.published,
    url: paper.url,
    keyword: keyword,
  });
}

// Persist seen IDs via named memory (cap at 1000 to prevent unbounded growth)
const seenArr = [...seenIds].slice(-1000);
await writeMemory('arxiv-seen-ids', JSON.stringify(seenArr));

Step 4: Append to Digest File

if (newPapers.length > 0) {
  const digest = newPapers
    .map(
      p =>
        `## ${p.title}\n**Authors:** ${p.authors}\n**Keyword:** ${p.keyword}\n**Published:** ${p.published}\n${p.summary}...\n[Read →](${p.url})\n`
    )
    .join('\n---\n');

  // Append to named memory digest
  const digestPath = '.claude/context/memory/named/arxiv-digest.md';
  const existing = fs.existsSync(digestPath) ? fs.readFileSync(digestPath, 'utf8') : '';
  fs.writeFileSync(
    '.claude/context/memory/named/arxiv-digest.md',
    `${existing}\n\n## ArXiv Update — ${new Date().toISOString().slice(0, 10)}\n\n${digest}`
  );
}

Integration with Morning Briefing

The morning briefing loop reads arxiv-digest.md for recent papers:

/loop at 8:00am Read .claude/context/memory/named/arxiv-digest.md and issues.md. Summarize: (1) top 3 new papers relevant to agent-studio, (2) technical debt, (3) top 2 tasks for today.

Configuration Reference

VariableDefaultDescription
ARXIV_KEYWORDSmulti-agent systemsComma-separated search keywords
ARXIV_MAX_RESULTS10Max papers per keyword per run
ARXIV_LOOKBACK_DAYS7Days to look back for new papers

Deduplication

  • Seen paper IDs stored via writeMemory('arxiv-seen-ids', ...) (named memory API)
  • Capped at 1000 most recent IDs to prevent unbounded growth
  • Papers with matching IDs are silently skipped on subsequent runs
  • Reset by calling await writeMemory('arxiv-seen-ids', '[]')

Related Skills

  • scheduled-tasks — CronCreate API for scheduling loops
  • exa-monitor — Exa web search companion monitor
  • heartbeat — Start all 7 heartbeat loops including this one
  • memory-search — Search the arxiv-digest for specific papers

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Ensure accessibility in UI components including semantic HTML, ARIA attributes, keyboard navigation, and WCAG 2.2 AA compliance.

The English summary is being prepared. Showing the original description.

oimiragieo/agent-studio43Updated Jul 14, 2026

Use when you want to improve response quality through meta-cognitive reasoning. Applies 15+ reasoning methods to reconsider and refine initial outputs.

The English summary is being prepared. Showing the original description.

oimiragieo/agent-studio43Updated Jul 14, 2026

N-round opposing-stance debates for trade-off analysis. Assigns pro/con roles to agents, runs structured debate rounds with quality scoring, and produces a moderator synthesis with confidence-rated recommendation. Generalizable to architecture, technology, security, and design decisions.

The English summary is being prepared. Showing the original description.

oimiragieo/agent-studio43Updated Jul 14, 2026

Force adversarial code review stance that eliminates confirmation bias — reviewer must find issues or re-analyze

The English summary is being prepared. Showing the original description.

oimiragieo/agent-studio43Updated Jul 14, 2026

Creates specialized AI agents on-demand when no existing agent matches a request. Use when the Router cannot find a suitable agent for a task. Enables self-evolution by generating persistent agents.

The English summary is being prepared. Showing the original description.

oimiragieo/agent-studio43Updated Jul 14, 2026

LLM-as-judge evaluation framework with 5-dimension rubric (accuracy, groundedness, coherence, completeness, helpfulness) for scoring AI-generated content quality with weighted composite scores and evidence citations

The English summary is being prepared. Showing the original description.

oimiragieo/agent-studio43Updated Jul 14, 2026

See all skills by oimiragieo

Report a problem with this skill