SquadScope is an automated AI-powered GitHub Pages site that publishes weekly, monthly, and yearly summaries of tech trends sourced from GitHub. The system crawls trending and newly-created repositories, applies AI analysis to identify signal vs. noise, and publishes curated insights with zero manual intervention.
SquadScope solves the information overload problem in open-source development. Each week, millions of repositories are created or gain stars. SquadScope:
- Crawls GitHub API for new and trending repositories in a given week
- Analyzes the data with Copilot to identify what's genuinely important vs. hype
- Generates human-readable weekly summaries with signal, noise, and gaps analysis
- Publishes to GitHub Pages with RSS feeds for consumption
- Reskills every 5 runs to improve its own analysis quality
Result: Curated tech trend insights delivered automatically every Monday.
SquadScope uses a 5-stage pipeline executed entirely in GitHub Actions:
Crawl → Analyze → Generate → Deploy → Reskill
↓ ↓ ↓ ↓ ↓
JSON Markdown Hugo Pages Improvements
Stage 1: Crawl (scripts/crawl.py, scripts/techcrunch_crawler.py)
- Queries GitHub API for repos created/trending in the current week
- Fetches configured external RSS feeds from
config/external_news_sources.jsonin parallel as an enrichment signal - Applies heuristic filtering (language, topic, description quality)
- Outputs:
data/raw/YYYY-WNN.json,data/raw/YYYY-WNN-external-news.json,data/snapshots/YYYY-WNN-stars.json
Stage 2: Analyze (Copilot CLI only)
- Reads raw JSON; applies AI analysis to classify repos as signal/noise/gaps
- Outputs:
data/analyzed/YYYY-WNN-summary.mdwith quality score and summary sections - Quality gate: Blocks publish if quality_score < 60 or missing required sections
Stage 3: Generate (scripts/generate_content.py)
- Converts analyzed Markdown into Hugo content structure
- Outputs:
content/weekly/YYYY/WNN.mdready for Hugo build
Stage 4: Deploy (Hugo + GitHub Pages)
- Builds static site from Hugo and publishes to GitHub Pages
- Outputs: Live website + RSS feeds at
https://jmservera.github.io/SquadScope/index.xmlandhttps://jmservera.github.io/SquadScope/feed/
Stage 5: Reskill (every 5th run)
- Every 5th run, Copilot reviews squad history and recent analysis outputs
- Writes observations and improvement recommendations to
.squad/reskill/YYYY-WNN.md - Optional: Can trigger PR with proposed prompt refinements (not auto-merged)
- Static site generator: Hugo (extended, v0.146.0+)
- Theme: PaperMod
- Search: Pagefind (static, client-side)
- Notifications: RSS feeds + GitHub Releases
- Automation: GitHub Actions
- Deployment: GitHub Pages
- Analysis engine: Copilot CLI only; no GitHub Models/OpenAI analysis fallback
- Visit the site: SquadScope: Browse weekly, monthly, yearly summaries
- Subscribe to RSS: Add
https://jmservera.github.io/SquadScope/index.xmlorhttps://jmservera.github.io/SquadScope/feed/to your reader - Check GitHub Releases: New summaries also posted as releases
- Fork this repository
- Configure
COPILOT_GH_TOKENsecret in your repo (fine-grained PAT with Copilot Requests permission) - Enable GitHub Pages (Actions source)
- Test manual run:
gh workflow run crawl-and-publish.yml - Monitor the first automated run
docs/rollout-checklist.md to ensure all prerequisites are in place.
- Install Hugo:
brew install hugo(macOS) or download from hugo releases (v0.146.0 or newer) - Clone with submodules:
git clone --recurse-submodules https://github.com/jmservera/SquadScope.git git submodule update --init --recursive
- Start dev server:
hugo server(default: http://localhost:1313) - Create production build:
hugo --minify(output:public/)
content/weekly/YYYY/WNN.md— immutable weekly summaries (published once, never modified)content/monthly/YYYY/MM.md— monthly rollups (append-only)content/yearly/YYYY.md— yearly summaries (append-only)data/raw/YYYY-WNN.json— GitHub crawler output (JSON object with keys:week,new_repos,trending_repos,signals,metadata)data/raw/YYYY-WNN-external-news.json— external RSS enrichment output from sources configured inconfig/external_news_sources.jsondata/analyzed/YYYY-WNN-summary.md— AI analysis with quality scoredata/snapshots/YYYY-WNN-stars.json— star count snapshots for trending analysis
.github/workflows/crawl-and-publish.yml runs the full weekly automation every Monday at 08:00 UTC:
- Crawl: GitHub API →
data/raw/YYYY-WNN.json; external RSS feeds →data/raw/YYYY-WNN-external-news.json - Analyze: Copilot →
data/analyzed/YYYY-WNN-summary.md - Quality gate: Validates quality_score ≥ 60; blocks publish if failed
- Generate: Markdown →
content/weekly/YYYY/WNN.md - Deploy: Hugo build → GitHub Pages
- Reskill: Every 5th run, review and improve squad state
- Automated schedule: Monday 08:00 UTC (
0 8 * * 1) - Manual trigger:
gh workflow run crawl-and-publish.ymlor GitHub Actions UI
COPILOT_GH_TOKEN— Fine-grained PAT with Account → Copilot Requests permission for Copilot CLI analysisGITHUB_TOKEN— Built-in; used for crawling, commits, Pages deployment, and issue/notification automation
signals.top_topicsde-duplicates repositories byfull_nameacross new and trending bucketsdata/snapshots/YYYY-WNN-stars.jsonpreserves the broader pre-filter candidate set for consistent week-over-weekstars_gainedcomparisons- Live runs use open-ended
created:>/pushed:>GitHub search filters --as-ofmode switches to bounded date ranges for deterministic historical backfills
- Standard deploys: Direct pushes to
maintrigger.github/workflows/deploy-site.yml - Weekly automation:
crawl-and-publish.ymlhandles full pipeline and deploys Pages - Deduplication: Deploy workflow skips bot-authored pushes to avoid duplicate Pages runs
docs/operator-guide.md— Complete setup, configuration, and troubleshooting guide for new operatorsdocs/rollout-checklist.md— Step-by-step verification checklist for first-time deploymentsdocs/pipeline-validation.md— Stage checklist, artifact handoffs, success criteria, and known limitationsdocs/analysis-spec.md— Detailed specification for analysis output format and quality gate criteria.squad/decisions.md— Architectural decisions and decision history