Build the refcurator shared Python package and 7 CLI scripts that were previously specification-only. Add Gemini CLI as an independent pre-distillation quality evaluator, replacing the circular Claude-self-review pattern. Key changes: - shared/lib/src/refcurator/: 7-module package (config, db, models, utils, manifest, gemini) with PyMySQL + JSON file dual backend - 7 Click CLI scripts: discover, crawl_mgr, repo, distiller, reviewer, exporter, pipeline — each with subcommands for data management - Gemini quality gate: evaluates raw content BEFORE distillation using 5 criteria (relevance, authority, completeness, freshness, distill_value) - Pipeline reordered: discovery → crawl → store → evaluate → distill → export - Bug fixes from Codex adversarial review: - FileBackend now hard-fails on JOIN/aggregate/GROUP BY queries - Exporter uses MAX(review_id) to prevent shipping stale approvals - Distiller updates existing rows on refactor instead of forking - Updated all 7 CLAUDE.md directives with real script references - install.sh updated with refcurator package install step 51/51 E2E tests passing. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.3 KiB
3.3 KiB
Reference Discovery
Search and identify authoritative sources for reference materials. Validates source credibility, prioritizes by relevance, and outputs curated URL lists with metadata.
Trigger Keywords
"find references", "search documentation", "discover sources", "find authoritative materials", "research topic sources"
Source Priority Hierarchy
| Tier | Source Type | Examples |
|---|---|---|
| Tier 1 | Official documentation | docs.anthropic.com, docs.claude.com, platform.openai.com/docs |
| Tier 1 | Engineering blogs (official) | anthropic.com/news, openai.com/blog |
| Tier 1 | Official GitHub repos | github.com/anthropics/, github.com/openai/ |
| Tier 2 | Research papers | arxiv.org, papers with citations |
| Tier 2 | Verified community guides | Cookbook examples, official tutorials |
| Tier 3 | Community content | Blog posts, tutorials, Stack Overflow |
Workflow
Step 1: Define Search Scope
Gather topic, target vendors, and freshness requirements from user input.
Step 2: Execute Web Search
Use WebSearch tool with targeted queries:
site:docs.anthropic.com {topic}
site:github.com/anthropics {topic}
site:arxiv.org {topic}
Step 3: Score and Validate Sources
Apply credibility scoring:
- Domain credibility (0.10 - 0.40)
- Freshness signals (0.10 - 0.20)
- Relevance signals (0.15)
Step 4: Output URL Manifest
Save discovered URLs as a manifest JSON, deduplicating against the existing repository:
# Create manifest from discovered URLs
uv run python scripts/discover.py create-manifest --topic "prompt engineering" --output manifest.json < urls.json
# Deduplicate against existing DB
uv run python scripts/discover.py dedup --manifest manifest.json
# Register a new source
uv run python scripts/discover.py register-source \
--name "Anthropic Docs" --type official_docs \
--url "https://docs.anthropic.com" --tier tier1_official --vendor anthropic
# List registered sources
uv run python scripts/discover.py list-sources --vendor anthropic
Manifest format:
{
"discovery_date": "2025-01-28T10:30:00",
"topic": "prompt engineering",
"total_urls": 15,
"urls": [
{
"url": "https://docs.anthropic.com/en/docs/prompt-engineering",
"title": "Prompt Engineering Guide",
"credibility_tier": "tier1_official",
"credibility_score": 0.85,
"source_type": "official_docs",
"vendor": "anthropic"
}
]
}
Output
manifest.json→ Handoff to02-web-crawler-orchestrator- New sources registered in
sourcestable viaregister-source
Deduplication
Before outputting:
- Normalize URLs (remove trailing slashes, query params)
- Check against existing
documentstable - Merge duplicates, keeping highest credibility score
Scripts
All scripts require the refcurator package. Run with uv run python from the skill directory.
| Command | Purpose |
|---|---|
discover.py create-manifest |
Create manifest from URL entries JSON |
discover.py dedup |
Deduplicate manifest against DB |
discover.py register-source |
Register a new source |
discover.py list-sources |
List registered sources |
Integration
| From | To |
|---|---|
| WebSearch results | → manifest.json |
| → manifest.json | web-crawler-orchestrator |
| → register-source | content-repository (sources table) |