Przejdź do treści
Biblioteka skilli
Edukacja · Research

program-scout

/program-scout

Szuka nowych programów magisterskich i doktoranckich oraz konkursów stypendialnych pasujących do profilu kandydata i unika duplikatów.

Licencja
MIT
Ostatnia zmiana repozytorium
28.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
2
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 28.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Szuka nowych programów magisterskich i doktoranckich oraz konkursów stypendialnych pasujących do profilu kandydata i unika duplikatów.

Oryginalny opis (EN)

Finds new master's and PhD programmes and scholarship calls matching the applicant profile, via the installed portal CLIs (DAAD, jobs.ac.uk, scholarship feeds, and any portal added with /add-portal). Deduplicates across runs. Triggers on: /discover, find programmes, find scholarships, search programmes, new scholarships, programme search, scholarship search, what's open, new calls, funding search.

Jak działa

  1. Step 1 — Load state
  2. Step 2 — Search every installed portal
  3. Step 3 — Gate everything that came from a feed
  4. Step 4 — Deduplicate and append
  5. Step 5 — Degraded-portal scan
  6. Step 6 — Report
  7. Writing to the state file
Sekcje z nagłówków SKILL.md, w oryginale · 111 linii, 534 słów
Podgląd SKILL.md
---
name: program-scout
description: >
  Finds new master's and PhD programmes and scholarship calls matching the
  applicant profile, via the installed portal CLIs (DAAD, jobs.ac.uk,
  scholarship feeds, and any portal added with /add-portal). Deduplicates
  across runs. Triggers on: /discover, find programmes, find scholarships,
  search programmes, new scholarships, programme search, scholarship search,
  what's open, new calls, funding search.
allowed-tools: Read, Glob, Grep, WebFetch, WebSearch, Edit, Write, Bash(python3 tools/program_key.py:*), Bash(python tools/program_key.py:*)
---

# Program Scout

Sweeps every installed portal, drops what has already been seen, and appends
the rest to `program_search/seen_programs.json` for `/rank` to score.

**It does not score and it does not judge fit.** It collects. Keeping the two
apart is what lets a sweep be cheap and a scoring run be careful.

## Step 1 — Load state

```bash
cat program_search/seen_programs.json
```

Shape: `{"seen": {"<key>": {...}}}`. Create it with `{"seen": {}}` if absent.

## Step 2 — Search every installed portal

Discover them rather than assuming: every `.agents/skills/*/SKILL.md` is a
portal. The three that ship:

```bash
# Master's and doctoral programmes in Germany (tuition is usually zero)
bun run .agents/skills/daad-programmes-search/cli/src/cli.ts search \
  --level masters --query "<field>" --language english --limit 25

bun run .agents/skills/daad-programmes-search/cli/src/cli.ts search \
  --level phd --query "<field>" --limit 25

# Funded doctoral studentships, open to international students
bun run .agents/skills/jobsacuk-phd-search/cli/src/cli.ts search \
  --level phd --query "<field>" --eligibility international-students \
  --funded --max-pages 2

# Scholarship calls
bun run .agents/skills/scholarship-feeds-search/cli/src/cli.ts search \
  --query "<field> scholarship" --level masters --calls-only
```

Use the search terms in `search-queries.md`.

Every portal's search output already carries award, provider, level, country,
deadline and url. That is the contract; a portal that stops emitting them is
broken, not merely quiet.

## Step 3 — Gate everything that came from a feed

Portal CLIs that return structured data from an institution's own API (DAAD)
are trusted as far as their source is. **Aggregator feed results are not.**
Run them through the gate before they enter state:

```bash
python3 tools/listing_guard.py --in <text> --text
```

If any `fraud_signals` family fires, do **not** add the entry silently.
Surface it to the user with the quotes, and record the verdict on the entry if
they still want it tracked.

## Step 4 — Deduplicate and append

Key every entry with the canonical function, never by hand:

```bash
python3 tools/program_key.py --provider "<provider>" --award "<award>" --url "<url>"
```

Skip a key already in `seen`. For a new one, append:

```json
{
  "award": "...", "provider": "...", "kind": "program|scholarship",
  "level": "masters|phd", "country": "...", "field": "...",
  "url": "...", "portal": "...", "source": "cli|websearch",
  "first_seen": "YYYY-MM-DD", "deadline": "YYYY-MM-DD|null",
  "opens": "YYYY-MM-DD|null", "status": "new"
}
```

`deadline` is ISO or `null`. **Never invent one.** A guessed date on a
deadline board is worse than a hole, and the board treats a missing deadline
as unplannable, which is the correct and visible behaviour.

## Step 5 — Degraded-portal scan

Before reporting, check for a portal that returned successfully but uselessly:

- zero results where it has previously returned some;
- `provider` null or empty on every result;
- `deadline` null on every result from a portal that normally carries them.

Report these as degraded. A silently broken parser produces an empty sweep
that looks like a quiet week.

## Step 6 — Report

- new entries, grouped by level and country, with deadlines;
- anything the gate flagged, with its quotes;
- degraded or unreachable portals;
- entries whose deadline falls inside `LEAD_TIME_DAYS` (45) — these need a
  decision now, not at the deadline.

Then point at `/rank`.

## Writing to the state file

`program_search/seen_programs.json` is append-only by design. Never rewrite
an existing entry's `first_seen`, and never delete entries — `/rank` and
`/outcome` own status transitions.
Pliki w paczce (2)
  • SKILL.md 4 KB
  • search-queries.md 3 KB

Wersje

W bazie nie ma innych skilli o nazwie program-scout.

Migawka bazy z 13.11.2026 · wersja paczki bd978f71d5fc (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100scholarship-feeds-search
    Szuka stypendiów i grantów na studia magisterskie i doktoranckie, zwłaszcza w pełni finansowanych dla kandydatów z Afryki i Globalnego Południa. Przydaje się przy poszukiwaniu nowych naborów.
  • 90grad-application-assistant
    Pomaga w aplikacjach na studia magisterskie i doktoranckie: ocenia programy, pisze listy motywacyjne i przygotowuje do rozmów.
  • 95scrape
    Wyszukuje nowe oferty pracy pasujące do profilu przez zainstalowane narzędzia CLI portali pracy i pomija duplikaty z poprzednich uruchomień.
  • 95scrape
    Wyszukuje nowe oferty pracy pasujące do profilu przez zainstalowane narzędzia CLI portali pracy i pomija duplikaty z poprzednich uruchomień.
  • 95scrape
    Wyszukuje nowe oferty pracy pasujące do profilu przez zainstalowane narzędzia CLI portali pracy i pomija duplikaty z poprzednich uruchomień.
  • 95scrape
    Wyszukuje nowe oferty pracy pasujące do profilu przez zainstalowane narzędzia CLI portali pracy i pomija duplikaty z poprzednich uruchomień.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.