Skip to content
Back to skills

Grant Compass

ASecurity

Find fully-funded scholarships and programs at any degree level (Bachelor's, Master's, PhD) for any country the applicant names, defaulting to Europe if they don't say. Also finds matching professors for research degrees. Use when the user asks about funded study/PhD positions, scholarships, or Erasmus/Erasmus Mundus/DAAD/MSCA/Study Portals programs.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 26, 2026
ai-agentspythongitapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 26, 2026

npx -y skills add rx290/grant-compass --skill grant-compass --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Grant Compass?

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

Security grade badge for Grant Compass
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/rx290-grant-compass/badge)](https://www.skillsdirectory.com/skills/rx290-grant-compass)

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: grant-compass
description: Find fully-funded scholarships and programs at any degree level (Bachelor's, Master's, PhD) for any country the applicant names, defaulting to Europe if they don't say. Also finds matching professors for research degrees. Use when the user asks about funded study/PhD positions, scholarships, or Erasmus/Erasmus Mundus/DAAD/MSCA/Study Portals programs.
---

Token budget matters here. Do all deterministic fetching/parsing/scoring in the
`grantcompass` CLI (local Python, no LLM tokens). Only read the final compact
`output/report.md` back into context, never raw HTML, raw JSON, or full page
dumps. Do not pad the final answer with encouragement or filler; report the
table and one line on grade fit and deadlines, nothing else.

Steps:

1. Run `python -m grantcompass init` (from the repo root). If it just created
   `config.local.yaml` (or if `applicant.name` is still the placeholder
   `"Your Name"`), **ask the user directly, in the conversation**, before doing
   anything else:
   - Which country/countries do they want to target? If they don't say,
     default to all of Europe and tell them that's what you're doing.
   - Which degree level(s): Bachelor's, Master's/MS, and/or PhD?
   - Their field/keywords, and their grade (GPA/CGPA/percentage, whatever
     scale they use) and its scale.
   Write their answers into `config.local.yaml` yourself (it's gitignored,
   never guess or invent values, and never commit it). Then continue.
2. Run `python -m grantcompass professors`, a deterministic OpenReview/OpenAlex
   pass, no LLM involvement. Skip this entirely if `degree_target` is
   Bachelor's only, undergrad applicants don't need PI matching.
3. Program/funding listings have no stable public API, so this step needs your
   own web access:
   - Read `src/grantcompass/sources.yaml`.
   - Filter entries to those matching the applicant's `degree_target` (each
     entry's `levels` field) and `countries`.
   - For each matching entry with `has_api: false`, build a query from
     `config.local.yaml`'s `applicant.field_keywords` + `degree_target`, then
     WebSearch/WebFetch that source's `url_template`. Prioritize the aggregator
     platforms (Scholarshipportal/Bachelorsportal/Mastersportal/PhDportal,
     European Funding Guide) first, one query there surfaces many individual
     scholarships at once, which is far cheaper than querying every scheme
     site individually.
   - Extract only: name, degree_type, funding coverage, deadline (if stated),
     country, url. Append each as one compact JSON object to
     `data/programs_raw.json` (create the file/array if absent). Do NOT paste
     raw page text anywhere in context or into the file.
4. Run `python -m grantcompass score` then `python -m grantcompass report`.
5. Read only `output/report.md` and present it to the user as-is (or lightly
   reformatted), plus one line noting how many results were `borderline` vs
   `meets_minimum` on grade fit, and whether any deadlines were found. Stop
   there.

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…