Skip to content
Back to skills

Doc Research Download

ASecurity

'Repeatable workflow for domain documentation research WRKs: search for

  • 17 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 9, 2026
toolspythongoshellbashgitapidocumentation

Works with

  • api
  • mcp

Security analysis

A100/100

Scanned September 24, 2026

npx -y skills add vamseeachanta/workspace-hub --skill doc-research-download --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Doc Research Download?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Doc Research Download
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vamseeachanta-doc-research-download/badge)](https://www.skillsdirectory.com/skills/vamseeachanta-doc-research-download)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: doc-research-download
description: 'Repeatable workflow for domain documentation research WRKs: search for
  freely-available references, download PDFs via shared bash lib, catalogue into knowledge/seeds/<domain>-resources.yaml.
  Use when starting any WRK that collects and indexes domain reference documents.
  type: reference

  '
version: 1.0.0
category: data
type: reference
---

# Doc Research Download Skill

## Overview

Use this skill for any WRK that collects domain reference documents:
naval architecture, electrical engineering, structural analysis, etc.
It establishes where files live, how the download script is structured,
and what the catalogue YAML must contain.

## 6-Step Workflow

1. **Fetch seed URLs** — load each seed URL, extract all linked PDFs and sub-pages;
   produce an explicit list of direct download URLs (this is the discovery phase —
   output feeds the download script, not the template directly)
2. **Web search for extras** — search OCW, archive.org, standards bodies (IEC, ISO, IEEE,
   NFPA, ABS, DNV) for freely-available PDFs; add direct URLs to the list from step 1
3. **Create domain download script** — copy the template below; populate `download` calls
   with the URL list from steps 1–2; source `scripts/lib/download-helpers.sh`
4. **Catalogue** — write `knowledge/seeds/<domain>-resources.yaml` per `knowledge/seeds/schema.md`;
   validate each saved file is a real PDF (`file <path>` must report `PDF document`);
   move HTML/WAF responses to `pending_manual:` with `notes: "WAF — saved HTML, not PDF"`
5. **Regenerate document index** — run `scripts/data/document-index/` pipeline; if the full
   run takes >5 min, write `.claude/work-queue/assets/<WRK-ID>/index-regen-queued.txt`
   with the command to run — that file is the verifiable evidence for AC completion
6. **Record WAF-blocked / borrow-only** — add to `pending_manual:` in the YAML;
   never silently skip — every attempted resource must appear somewhere

## Script Template

Copy and adapt for each new domain:

```bash
#!/usr/bin/env bash
# ABOUTME: Download open-access <DOMAIN> documents to /mnt/ace/docs/_standards/<DIR>/
# Usage: bash scripts/data/<domain>/download-<domain>-docs.sh [--dry-run]

set -euo pipefail

DEST="/mnt/ace/docs/_standards/<DIR>"
LOG_DIR="$(git rev-parse --show-toplevel)/.claude/work-queue/assets/<WRK-ID>"
LOG_FILE="${LOG_DIR}/download.log"
DRY_RUN=false
[[ "${1:-}" == "--dry-run" ]] && DRY_RUN=true

mkdir -p "${DEST}/textbooks"
mkdir -p "${LOG_DIR}"

# shellcheck source=scripts/lib/download-helpers.sh
source "$(git rev-parse --show-toplevel)/scripts/lib/download-helpers.sh"

log "=== <DOMAIN> Download — <WRK-ID> ==="
log "Destination: ${DEST}"
log "Dry run: ${DRY_RUN}"

# ─────────────────────────────────
# TEXTBOOKS — direct PDF links
# ─────────────────────────────────
log "--- Textbooks ---"

download \
  "https://example.org/book.pdf" \
  "${DEST}/textbooks" \
  "Descriptive-Filename.pdf"

log "=== Download complete ==="
total=$(find "${DEST}" -name "*.pdf" | wc -l)
log "  Total PDFs: ${total}"
```

## Catalogue YAML Template

```yaml
category: <domain-slug>
subcategory: references
created_at: "YYYY-MM-DD"

textbooks:
  - title: "Full Book Title"
    author: "Author or Organisation"
    year: YYYY
    local_path: "/mnt/ace/docs/_standards/<DIR>/textbooks/filename.pdf"
    source_url: "https://..."
    size_mb: N
    topics: [topic1, topic2]

online_portals:
  - title: "Portal Name"
    url: "https://..."
    notes: "What is available here"

pending_manual:
  - title: "Blocked Book"
    url: "https://..."
    notes: "Reason: archive.org borrow-only"
```

## AC Checklist

- [ ] All seed URLs fetched and linked PDFs extracted
- [ ] Web search performed for additional freely-available resources
- [ ] All downloadable PDFs saved to `/mnt/ace/docs/_standards/<DOMAIN>/`
- [ ] Catalogue YAML written at `knowledge/seeds/<domain>-resources.yaml`
- [ ] Document index regenerated, or `assets/<WRK-ID>/index-regen-queued.txt` written
- [ ] No paywalled or DRM-protected content downloaded; WAF-blocked items in `pending_manual:`

## Known WAF Patterns

| Site | Behaviour | Workaround |
|------|-----------|------------|
| eagle.org (ABS) | Cloudflare WAF — 403 for wget/curl | Download manually via browser |
| archive.org borrow-only | HTTP 403 — "This item is not available for download" | Add to `pending_manual:`; note borrow URL |
| IEEE Xplore full-text | Paywalled unless institution login | Only download confirmed open-access items |

These patterns were identified during WRK-1151 (naval architecture).

## Web Crawling & MCP Assessment (2026-03-14)

**Decision: No external MCP needed. Use Python scripts (httpx + beautifulsoup4).**

Available built-in tools for web content:
- `WebFetch` — single URL fetch (adequate for known pages)
- `WebSearch` — web search + results
- `claude-in-chrome` — full browser automation for JS-rendered pages

Assessed and rejected (cost or unnecessary complexity):
- Firecrawl MCP — paid service, rejected
- Crawl4AI MCP — free but adds unnecessary dependency layer
- Playwright MCP — only useful for JS-rendered pages (already covered by claude-in-chrome)
- Fetch MCP (Anthropic) — minimal gain over WebFetch

**For WRK-1202 Tier 3 scripts**, use `httpx` + `beautifulsoup4` + `robotsparser` directly.
BSEE/EIA/IMO are standard REST APIs and static HTML — no MCP needed.

See also: `web-scraper-energy` skill for existing BOEM/BSEE scraping patterns.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.