moonlight-lupin/agent-skills/source-tracker
Claude Code and agent skill by moonlight-lupin/agent-skills
- community
Checking that the SKILL.md file is still in the repository.
Use when research spans multiple sessions and citations must persist — add URLs as they're cited, dedup variants, tag by topic, check link health, and export bibliographies in Markdown/BibTeX/CSV/JSON.
Install
npx vskill@latest install moonlight-lupin/agent-skills/source-trackerSKILL.md
Source Tracker
Overview
Source Tracker is a small persistent citation manager for research workflows. Research sources often scatter across browser tabs, notes, temporary files, and separate sessions. URLs get cited once and then disappear, duplicates accumulate as http/https or www variants, and bibliography export becomes a manual cleanup job at the end.
This skill fixes that by keeping a portable SQLite database of every cited URL: add sources as soon as they are cited, tag them by topic, deduplicate URL variants, re-check stale links, and export bibliographies in Markdown, BibTeX, CSV, or JSON.
The database path is configurable with --db-path or the SOURCE_TRACKER_DB environment variable. If neither is set, commands use ./sources.db relative to the current working directory.
Quick Start
From the skill directory:
A practical example:
Use a persistent project database when research spans folders or sessions:
Or pass the path explicitly:
Workflows
1. Add Sources
Add every URL at the moment it becomes a cited source. Always include a topic. Use a source type when the material is not a normal web page.
If --title is omitted, the script tries a best-effort GET request and parses <title>. If that fetch fails, the source is still added with a blank title.
Completion criterion: the command prints a JSON object with inserted: true for a new row or inserted: false for an exact canonical URL already in the DB.
2. Search Sources
Search by topic and optional filters. Results are JSON so they can be piped into other tools.
Filter by date range:
Filter by source type and verification status:
Completion criterion: the JSON array contains only records matching the topic and filters.
3. Deduplicate URL Variants
Run dedup after a research burst or before export. It merges common URL variants such as http vs https, www. vs bare host, fragment-only differences, and trailing slash differences.
Completion criterion: the command prints a JSON summary with merged_groups, removed_rows, and removed_ids. The survivor keeps the earliest accessed_at and combines non-empty notes from all merged rows.
4. Export Bibliographies
Export a topic bibliography. If --output is omitted, content prints to stdout. If --output is set, provide the file path to the user.
Markdown:
BibTeX:
CSV:
JSON:
Completion criterion: the output contains every source for the topic, sorted by topic/title/date, in the requested format.
5. Health Check
Run link health checks manually before a final report or from a cron scheduler. The checker uses HEAD requests, marks HTTP 200-399 as alive, updates last_checked, and flags dead links by setting verified = 0.
With an explicit database path:
Completion criterion: the command prints Checked N URLs: M alive, K dead and exits with code 0. Dead links are recorded in the database; they are not treated as runtime errors.
6. Stats and Topic Inventory
Show source counts by topic, type, and verification status:
List all topic tags:
Completion criterion: stats print as JSON and topic inventory prints a JSON array of distinct topic strings.
URL Normalization Rules
Source Tracker uses two levels of URL handling:
- Canonical storage URL
- Lowercase scheme and host.
- Strip URL fragments such as
#section. - Strip trailing slash on non-root paths.
- Preserve query strings.
- Preserve
www.because it may be the URL the user expects to see.
- Dedup comparison key
- Applies all canonical storage rules.
- Treats
httpandhttpsvariants as the same source. - Strips a leading
www.prefix from the host for comparison only.
Examples:
| Input | Canonical URL | Dedup comparison | |
|---|---|---|---|
HTTPS://WWW.Example.com/Page/#intro | https://www.example.com/Page | //example.com/Page | |
http://example.com/ | http://example.com/ | //example.com/ | |
https://www.example.com | https://www.example.com/ | //example.com/ |
Source Types
Use one of these values with --type:
| Type | Use for | |
|---|---|---|
web | Standard web pages, documentation pages, blog posts, landing pages. | |
pdf | Direct PDF URLs or pages where the source of record is a PDF. | |
api | API endpoints, JSON/XML data endpoints, machine-readable service output. | |
dataset | Data downloads, CSV/Parquet repositories, public data catalogs. | |
book | Online books, book chapters, scans, or bibliographic pages for books. | |
news | News articles, wire reports, interviews, live blogs. | |
report | White papers, government reports, analyst reports, institutional reports. |
Research Workflow Integration
Deep Research
During iterative search/extract/synthesize work, add a source immediately after it passes the quality filter and before using it in the synthesis:
Before the final report:
Notebook-style Source Vaults
When building a source vault, add each source as it enters the vault. Store the vault or corpus identifier in --session-id, and use notes for coverage labels such as primary evidence, background, or contradiction.
Entity Research
For entity dossiers, tag sources with the entity name plus the research lens. Use source types to distinguish official registries, adverse media, reports, and datasets.
Cron Usage
Run weekly health checks with the cron scheduler. Example crontab entry:
Use small batches for very large databases to avoid long scheduler jobs:
Output Formats
- Markdown bibliography — grouped by topic, with each source rendered as
- [Title](URL) — notes (accessed_at).
- BibTeX —
@misc{key, title={...}, url={...}, note={...}, urldate={...}}. - CSV —
id,url,title,topic,source_type,accessed_at,notes,verified,last_checked. - JSON — array of full source objects, including
session_idand normalized
URL fields.
See references/export-formats.md for concrete examples.
Common Pitfalls
- Invented URLs — never add a URL unless it came from a web search tool,
web extraction tool, user-provided source, or another verifiable source channel. If a URL was guessed, verify it before adding it.
- Missing topic tags —
--topicis required for a reason. Use consistent
topic names so search, stats, and export do not fragment across near-duplicates.
- Stale health checks —
verified = 1means the source was alive at its
last check, not that it is alive forever. Run url_health.py before final delivery for long-running projects.
- Duplicate variants —
https://www.example.com/,http://example.com,
and https://example.com#intro can refer to the same source. Run dedup before export.
- Blank titles — title extraction is best-effort. For important citations,
pass --title explicitly instead of relying on a remote page fetch.
- Relative database confusion — the default
./sources.dbdepends on the
current working directory. Use SOURCE_TRACKER_DB or --db-path for long-running projects.
Verification Checklist
- [ ] Every cited URL was observed through a real source channel before adding.
- [ ] Each added row has a meaningful
--topicand appropriate--type. - [ ]
python scripts/source_db.py dedupwas run before bibliography export. - [ ]
python scripts/url_health.pywas run recently for final deliverables. - [ ] Exported bibliography uses the requested format and output path.
- [ ] Dead or unverified links are reviewed before final citation use.
- [ ] The database path is explicit for multi-session work (
--db-pathor
SOURCE_TRACKER_DB).
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingresearch/source-tracker/SKILL.md
Popularity
- Repository stars
- 76
- Repository forks
- 12
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/moonlight-lupin/agent-skills/source-tracker)