alterlab-docentlik-eligibility

$npx mdskill add AlterLab-IEU/AlterLab-Academic-Skills/alterlab-docentlik-eligibility

Runs a partial pre-screen of a Turkish associate-professorship publication list against ÜAK criteria

  • Identifies unmodelled mandatory minimums for user verification.
  • Uses alterlab-trdizin to resolve live TR Dizin status and compute akademik teşvik score.
  • Applies author-share rule and checks four computable minimums (total, post-doctorate, SSCI points, lead-author Q1-Q4 articles).
  • Delivers a list of unmodelled mandatory minimums for user verification.

SKILL.md

.github/skills/alterlab-docentlik-eligibilityView on GitHub ↗
---
name: alterlab-docentlik-eligibility
description: "Runs a PARTIAL pre-screen of a Turkish associate-professorship (doçentlik) publication list against the ÜAK (Üniversitelerarası Kurul) Sağlık Bilimleri TABLO 10 criteria, applying the author-share rule (full; 0.8 + 0.5; lead-author half-the-rest split) and pass-fail checking the four computable minimums (≥100 total, ≥90 post-doctorate, ≥40 SCIE/SSCI article points, ≥3 lead-author Q1–Q4 articles). It deliberately does NOT emit an ELIGIBLE verdict — it lists the unmodelled mandatory minimums (TR Dizin/national article, citation, congress, teaching, per-category caps) for the user to verify. Use when the user wants to estimate doçentlik eligibility, calculate ÜAK points, or audit lead-author (başlıca yazar) requirements; resolve a journal's live TR Dizin status with alterlab-trdizin first, and compute the akademik teşvik (academic-incentive) score with alterlab-akademik-tesvik. Always verify the full live TABLO 10 — criteria change each term and differ per field. Part of the AlterLab Academic Skills suite."
license: MIT
allowed-tools: Read Write Edit Bash(python:*)
compatibility: No API key required — pure offline PARTIAL pre-screen (stdlib Python) over a bundled, dated ÜAK criteria table; never emits an ELIGIBLE verdict; live journal-index status is delegated to alterlab-trdizin
metadata:
  skill-author: AlterLab
  version: "2.0.0"
  last_updated: "2026-06-08"
  depends_on: "alterlab-trdizin (live TR Dizin status feeds scoring), alterlab-akademik-tesvik (separate incentive score)"
---

# Doçentlik Eligibility — PARTIAL Pre-Screen Against the ÜAK Criteria

Pre-screens a candidate's publication list against the **doçentlik** (associate
professorship) point gate set by **ÜAK** (Üniversitelerarası Kurul / the
Inter-University Council) for the **Sağlık Bilimleri (Health Sciences)** field.
Given a publication list with each item's index tier and author role, it applies
the per-field point table, the **author-share rule** (paylaşım kuralı), and
pass-fail-checks the **four mandatory minimums it can compute from a publication
list** — reporting the exact shortfall on any that fail.

> **This is a PARTIAL pre-screen, not an eligibility decision — and it never
> outputs an "ELIGIBLE" verdict.** The live TABLO 10 imposes several more
> mandatory minimums (a TR Dizin / national-article requirement, a citation
> minimum, a scientific-meeting minimum, an education minimum, and per-category
> point caps) that depend on inputs a bare publication list does not carry. The
> scorer lists those unmodelled minimums in every report and the best status it
> can return is `PRESCREEN_PASS_VERIFY_REMAINING` — "all computable checks pass;
> a human must still verify the rest against the live ÜAK source." A failed
> computable check returns `FAIL_MODELLED_CHECK`.

This is a **deterministic offline tool**: the same input always yields the same
status. It does **not** decide the *quality* of a candidate's work — that is the
doçentlik jury's role — and it does **not** look up a journal's live index
status (use `alterlab-trdizin` for that, then feed the result in).

## Quick Start

```
Am I eligible for doçentlik? Here is my publication list with indexes and author roles.
Doçentlik için yeterli puanım var mı? Yayın listem ekte (Q tier + yazar sırası ile).
Calculate my ÜAK doçentlik points for the Sağlık (Health) field.
Do I meet the ≥3 lead-author Q-article requirement, or am I short?
```

→ **Run** `scripts/score_docentlik.py` over the list (JSON), read the
`summary.verdict`, then present the score breakdown, every failed computable
minimum, the **unmodelled mandatory minimums the user must still verify**, and
the **verify-against-current-period** disclaimer below. Never restate the
`PRESCREEN_PASS_VERIFY_REMAINING` status as "eligible" — it is not.

---

## CRITICAL: Verify Against the Current ÜAK Period

ÜAK republishes the doçentlik criteria **each application term** (başvuru
dönemi), and the per-field point tables change between terms. The numbers
bundled in this skill are pinned with a `last_verified` date in
`references/uak_criteria.md` and reflect the **Sağlık Bilimleri (Health
Sciences)** TABLO 10 as captured then.

**Before relying on any output**, the candidate MUST confirm the live criteria
for their own field and term against the primary ÜAK source:
<https://www.uak.gov.tr/> (Doçentlik → Başvuru Şartları / criteria tables). The
binding regulation is the **Doçentlik Yönetmeliği** (RG 15/4/2018 No. 30392),
at <https://www.mevzuat.gov.tr/mevzuat?MevzuatNo=24519&MevzuatTur=7&MevzuatTertip=5>.
Every output this skill produces ends with this disclaimer. Never present a
verdict as the final official decision.

---

## When to Use This Skill

Use it when the request is about **scoring a publication list for the doçentlik
point gate** — total points, post-doctorate points, the lead-author Q-article
minimum, or the co-author share calculation.

### Does NOT Trigger

| The user actually wants… | Route to |
|---|---|
| The **akademik teşvik** (academic-incentive) annual score — different table, k·r·p coefficients, 30% rule, 100-point cap | `alterlab-akademik-tesvik` |
| To check whether a target journal is **currently TR Dizin-indexed** (status feeds this scorer) | `alterlab-trdizin` |
| To check a journal's DergiPark hosting / scope / self-declared indexing | `alterlab-dergipark` |
| Broader Turkish career-track planning (Dr. Öğr. Üyesi → Doçent → Profesör, YÖKSİS dossier) | `alterlab-academic-career` |
| TÜBİTAK ARDEB 1001/1002-A proposal scaffolding | `alterlab-tubitak-proposal` |
| Whether a study needed **etik kurul** (ethics committee) approval | `alterlab-tr-research-ethics` |
| Turkish APA-7 / TR Dizin reference style for a manuscript | `alterlab-tr-academic-style` |
| Verifying that cited references actually **exist** (hallucination check) | `alterlab-citation-verifier` |
| Finding a Turkish graduate **thesis** (tez) | `alterlab-yok-tez` |
| An academic's official current **affiliation / CV** (YÖK Akademik) | `alterlab-yok-akademik` |

---

## The Scoring Model

### Modelled checks (the four this tool computes — all must pass)

1. **Total points ≥ 100** across all scored work.
2. **Post-doctorate points ≥ 90** — points earned from work published *after*
   the candidate received the doctorate / uzmanlık (doktora-uzmanlık sonrası).
   Pre-doctorate work still counts toward the 100 total but not toward this 90.
3. **International SCIE/SSCI article points ≥ 40** — sum of post-doctorate
   **Q1–Q4** article points (the `intl_scie_ge_40` check). AHCI/ESCI/TR Dizin do
   not count toward this floor.
4. **At least 3 lead-author Q-indexed articles** — articles in a Q1–Q4 (SCIE/
   SSCI, quartile-ranked) journal where the candidate is the **başlıca yazar**
   (lead author). For Sağlık, **Q4 counts** toward this ≥3 (verified against the
   live ÜAK Sağlık criteria). See the share rule for who qualifies as lead.

Passing all four returns `PRESCREEN_PASS_VERIFY_REMAINING` (not "eligible").
Failing any returns `FAIL_MODELLED_CHECK` with the exact shortfall.

### Mandatory minimums this tool does NOT model — the user must verify these

The live Sağlık Bilimleri TABLO 10 also requires the following, which a bare
publication list cannot supply. The scorer **lists every one of them** in
`summary.unmodelled_minimums` and cannot clear them:

- **National / TR Dizin articles** — ≥3 ulusal makale, ≥2 in TR Dizin, başlıca
  yazar in ≥2 (resolve TR Dizin status with `alterlab-trdizin` first).
- **Citation (atıf)** — ≥5 post-doctorate citation points.
- **Scientific meeting (bilimsel toplantı / bildiri)** — ≥5 points.
- **Education / teaching (eğitim-öğretim)** — ≥2 points.
- **Per-category point caps** — thesis-derived, books, citation, project, thesis
  supervision, patent, award all have ceilings (values single-source — verify).

> **Why no ELIGIBLE verdict.** Because these minimums are unmodelled, a green
> pass on the four computable checks is **necessary but not sufficient**. The
> tool therefore structurally cannot output "eligible" — re-verify the full
> TABLO 10 checklist against the live ÜAK source for the candidate's term. Full
> detail and provenance: `references/uak_criteria.md`.

### Per-field point table (bundled, dated)

The point a publication earns depends on the **field** (alan) and the journal's
**index tier**. This skill bundles the **Sağlık Bilimleri TABLO 10** values
captured on the `last_verified` date:

| Index tier | Points |
|---|---|
| Q1 (SCI-E / SSCI, 1st quartile) | 30 |
| Q2 | 20 |
| Q3 | 15 |
| Q4 | 10 |
| AHCI (Arts & Humanities Citation Index) | 20 |
| ESCI (Emerging Sources Citation Index) | 10 |
| TR Dizin (ULAKBİM national index) | 10 |

Other fields (Fen, Sosyal, Mühendislik, …) use **different** tables — the script
accepts a field selector but only ships the verified Sağlık table. For another
field, supply that field's table from the live ÜAK source; do **not** reuse the
Sağlık numbers. Full table and provenance: `references/uak_criteria.md`.

### Author-share rule (paylaşım kuralı)

A publication's face points are scaled by the candidate's authorship role:

- **Single author** → full points (×1.0).
- **Two authors** → the **lead author (başlıca yazar)** gets **0.8**; the
  **non-lead** second author gets **0.5** (the two are *not* scored equally).
- **Three or more authors** → the **lead author (başlıca yazar)** takes
  **half** the points; the remaining half is split **equally** among all
  remaining authors.

The script computes the candidate's scaled contribution per item from the author
count and the candidate's role. Worked numeric examples and the exact rounding
convention are in `references/scoring_rules.md`.

> **başlıca yazar (lead author)** — first author, corresponding author, or the
> sole supervising (advisor) author of a student-derived article, per ÜAK's
> definition. The candidate declares this per item; the scorer trusts the flag
> but reports it so a reviewer can audit it.

---

## Pipeline (how to run it)

### 1. Capture the publication list

Each item needs: a title (free text), the **field**, the **index tier** (one of
`Q1 Q2 Q3 Q4 AHCI ESCI TRDizin`), the **author count**, whether the candidate is
**lead author**, and whether it is **post-doctorate**. Example JSON:

```json
{
  "field": "saglik",
  "publications": [
    {"title": "Article A", "index": "Q1", "authors": 3, "is_lead": true,  "post_doc": true},
    {"title": "Article B", "index": "Q2", "authors": 1, "is_lead": true,  "post_doc": true},
    {"title": "Article C", "index": "TRDizin", "authors": 2, "is_lead": false, "post_doc": false}
  ]
}
```

If a journal's index tier is uncertain, resolve it first: for TR Dizin status
run `alterlab-trdizin`; for quartile, check the candidate's records. Do **not**
guess a tier — an unknown tier must be flagged, not scored.

### 2. Run the scorer

```bash
uv run python skills/turkish-academia/alterlab-docentlik-eligibility/scripts/score_docentlik.py \
    publications.json \
    --out docentlik_report.json
```

- The input path may be `-` (stdin) or inline JSON.
- `--field saglik` (default) selects the bundled table; other fields require a
  supplied table file and the script refuses to invent one.
- Omit `--out` to print the JSON report to stdout.

The script is **pure stdlib** — no network, no third-party deps — so it runs in a
bare `uv` environment and is fully reproducible offline.

### 3. Read the report and present it

Parse `summary.verdict` (`FAIL_MODELLED_CHECK` / `PRESCREEN_PASS_VERIFY_REMAINING`
— there is **no** `ELIGIBLE` value) and present:

1. The **headline status** and the four computable check results
   (`total_points`, `post_doc_points`, `intl_scie_points`, `lead_q_articles`)
   against their thresholds (100 / 90 / 40 / 3).
2. A **per-publication table** with each item's face points, the applied share
   factor, and its scaled contribution.
3. For every **failed** minimum, the exact shortfall (e.g. "82 / 100 points — 18
   short" or "2 / 3 lead-author Q articles — 1 short").
4. The **unmodelled mandatory minimums** from `summary.unmodelled_minimums` as a
   checklist the user must verify by hand — make clear the tool could **not**
   check these and that a `PRESCREEN_PASS_VERIFY_REMAINING` is **not** an
   eligibility confirmation.
5. Any items with an **unknown index tier**, flagged as unscored.
6. The **verify-against-current-period disclaimer**, always.

---

## Output Shape (excerpt)

```json
{
  "tool": "alterlab-docentlik-eligibility/score_docentlik.py",
  "version": "2.0.0",
  "field": "saglik",
  "table_last_verified": "2026-06-08",
  "prescreen_only": true,
  "summary": {
    "verdict": "FAIL_MODELLED_CHECK",
    "verdict_meaning": "At least one modelled minimum ... fails — not eligible ...",
    "all_modelled_checks_pass": false,
    "total_points": 95.0,
    "post_doc_points": 85.0,
    "intl_scie_points": 60.0,
    "lead_q_articles": 2,
    "checks": {
      "total_ge_100":         {"pass": false, "value": 95.0, "threshold": 100, "short": 5.0},
      "post_doc_ge_90":       {"pass": false, "value": 85.0, "threshold": 90,  "short": 5.0},
      "intl_scie_ge_40":      {"pass": true,  "value": 60.0, "threshold": 40},
      "lead_q_articles_ge_3": {"pass": false, "value": 2,    "threshold": 3,   "short": 1}
    },
    "unmodelled_minimums": [
      {"id": "national_trdizin_articles", "label_tr": "Ulusal makale / TR Dizin asgari koşulu", "requirement": "...", "why_unmodelled": "..."}
    ]
  },
  "publications": [
    {"title": "Article A", "index": "Q1", "face_points": 30, "share_factor": 0.5, "scaled": 15.0, "counts_lead_q": true, "is_scie_ssci": true}
  ],
  "disclaimer": "PARTIAL PRE-SCREEN — NOT an eligibility decision. ... It therefore NEVER returns 'ELIGIBLE'. ÜAK doçentlik criteria change each application term ... verify the full TABLO 10 at https://www.uak.gov.tr/ ..."
}
```

> The only two `verdict` values are `FAIL_MODELLED_CHECK` and
> `PRESCREEN_PASS_VERIFY_REMAINING`. There is **no** `ELIGIBLE` value by design.

---

## Self-Check Before Reporting

- Did you state the **field** and the table's `last_verified` date? A Sağlık
  result must not be presented as valid for another field.
- Are all **four** modelled checks reported (total / post-doc / intl SCIE-SSCI /
  lead-author Q), even the ones that pass?
- Did you present the **unmodelled mandatory minimums** as a verify-by-hand
  checklist, and make clear the tool did NOT check them?
- Did you avoid calling a `PRESCREEN_PASS_VERIFY_REMAINING` result "eligible"?
  It is **not** an eligibility confirmation.
- Did any item have an **unknown index tier**? Those are unscored — say so, do
  not silently drop or guess them.
- Is the headline `verdict` consistent with the checks (any failed modelled
  minimum → `FAIL_MODELLED_CHECK`)?
- Did you include the **verify-against-current-period disclaimer**?

---

## References

- `references/uak_criteria.md` — the bundled, dated Sağlık Bilimleri TABLO 10
  point table, the four MODELLED minimums, the mandatory minimums NOT modelled
  (verify by hand), and the primary ÜAK source links.
- `references/scoring_rules.md` — the author-share rule with worked numeric
  examples, the lead-author definition, the SCIE/SSCI ≥40 floor, and the
  rounding convention.

Part of the AlterLab Academic Skills suite.

More from AlterLab-IEU/AlterLab-Academic-Skills

SkillDescription
alterlab-abm-mesaBuilds agent-based models of social systems with Mesa 3 — the current AgentSet API (model.agents.shuffle_do('step'), auto-assigned unique_id, mandatory super().__init__(seed=...)), cell spaces (mesa.discrete_space OrthogonalMooreGrid / classic mesa.space grids), the DataCollector, batch_run parameter sweeps, and SolaraViz — for emergence, segregation, diffusion, opinion dynamics, and cooperation models. It uses the Mesa 3.x API (the old mesa.time schedulers like RandomActivation are removed) and treats the model as a generative theory to be validated, not just run. Use when the request mentions an agent-based model, Mesa, simulating interacting agents, or emergent macro behavior from micro rules. For discrete-event (queueing/process) simulation prefer alterlab-simpy; for reinforcement learning prefer alterlab-stable-baselines3. Part of the AlterLab Academic Skills suite.
alterlab-academic-careerPrepares academic career documents and professional-development materials for faculty and researchers. Use when drafting academic CVs, research statements, teaching philosophies, diversity statements, faculty-position cover letters, tenure dossiers, promotion narratives, academic portfolios, or mentorship statements, and when planning conference-networking strategy, building academic web presence, setting up ORCID profiles, or understanding impact metrics. Part of the AlterLab Academic Skills suite.
alterlab-accreditation-aolScaffolds program-level Assurance-of-Learning (AoL) documentation for AACSB (2020 Standard 5) and ABET (Criterion 3 Student Outcomes, Criterion 4 Continuous Improvement) accreditation — program learning outcomes / competency goals, curriculum-to-outcome mapping matrices, direct- and indirect-assessment plans, rubric design, and closing-the-loop continuous-improvement narratives — and validates the structure of an outcome-mapping matrix with scripts/aol_matrix.py. Use when the user needs AACSB or ABET assurance-of-learning material, a program-learning-outcomes set, a curriculum/outcome map or coverage matrix, a direct/indirect assessment plan, a closing-the-loop report, or accreditation self-study text. For single-course design or course rubrics prefer alterlab-teaching-design; for post-award grant reports prefer alterlab-grant-reporting. Part of the AlterLab Academic Skills suite.
alterlab-adaptyvSubmits and tracks protein-testing experiments on the Adaptyv Bio Foundry cloud lab (wet-lab validation), and optimizes protein sequences before submission with computational tools (NetSolP, SoluProt, SolubleMPNN, ESM). Use when designing proteins that need wet-lab validation - binding/affinity screening, expression testing, thermostability, or fluorescence assays - or when submitting experiments to the Foundry API, browsing the target catalog, tracking experiment status, retrieving results, or pre-screening sequences for solubility/expression. Triggers on "Adaptyv", "Foundry API", "cloud lab", "biolayer interferometry / BLI", "wet-lab validation". Part of the AlterLab Academic Skills suite.
alterlab-aeonRuns time series machine learning with the aeon library — classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search via scikit-learn compatible APIs. Use when working with temporal data, sequential patterns, or time-indexed observations (univariate or multivariate) that need specialized algorithms beyond standard ML approaches. Part of the AlterLab Academic Skills suite.
alterlab-akademik-tesvikComputes the annual Turkish academic-incentive (akademik teşvik) score for Devlet (state) university öğretim elemanı (academic staff) from a classified activity list, applying the verified Akademik Teşvik Ödeneği Yönetmeliği (2018/11834) Faaliyet Hesaplama Tablosu headline puanları (Proje 20, Araştırma 15, Yayın 30, Patent 30, Atıf 30, Tebliğ 20, Ödül 20) with the k (author-count), p (Q1 1/Q2 0.8/Q3 0.5/Q4 0.25), and r (project-role) coefficients via türü puanı = Σ(faaliyet oranları) × headline (MADDE 8/2), then enforcing the per-type headline ceilings, the 100 cap (MADDE 8/3), and the net-30 payment gate (MADDE 10/3) in a deterministic scripts/tesvik_score.py. Use when the user wants to calculate akademik teşvik puanı, check the en az 30 (net-30) threshold, apply TABLO 4 ceilings, or estimate teşvik eligibility; keeps its coefficients separate from doçentlik scoring. For doçentlik point eligibility prefer alterlab-docentlik-eligibility. Part of the AlterLab Academic Skills suite.
alterlab-alpha-vantageAccesses real-time and historical stock market data, forex rates, cryptocurrency prices, commodities, economic indicators, and 50+ technical indicators via the Alpha Vantage API (requires a free API key from alphavantage.co). Use when fetching stock prices (OHLCV), company fundamentals (income statement, balance sheet, cash flow), earnings, options data, market news/sentiment, insider transactions, GDP, CPI, treasury yields, gold/silver/oil prices, Bitcoin/crypto prices, forex exchange rates, or calculating technical indicators (SMA, EMA, MACD, RSI, Bollinger Bands). Part of the AlterLab Academic Skills suite.
alterlab-alphafoldPredict protein 3D structures with AlphaFold2 via ColabFold — MMseqs2-accelerated MSAs, monomer and AlphaFold2-Multimer complex folding, and confidence-based validation (pLDDT, pTM/ipTM, PAE). Use when folding a protein sequence or complex from FASTA, generating a predicted structure with confidence metrics, ranking models, or checking self-consistency of a design. For co-folding a protein WITH a small-molecule ligand or predicting binding affinity prefer alterlab-boltz; for antibody–antigen or one-FASTA multi-entity complexes prefer alterlab-chai; to LOOK UP an already-computed structure prefer alterlab-alphafold-db; for ESM embeddings or inverse folding prefer alterlab-esm. Part of the AlterLab Academic Skills suite.
alterlab-alphafold-dbAccess the AlphaFold DB of 200M+ AI-PREDICTED protein structures — retrieve models by UniProt accession, download PDB/mmCIF files, and analyze prediction confidence metrics (pLDDT, PAE). Use when a UniProt ID needs a computationally predicted 3D structure or when no experimental structure exists, for homology modeling, protein engineering, or structure-based drug discovery; for EXPERIMENTALLY determined structures (X-ray, cryo-EM, NMR) prefer alterlab-pdb, and for protein sequences, annotations, or accession ID mapping prefer alterlab-uniprot instead. Part of the AlterLab Academic Skills suite.
alterlab-anndataBuild, slice, concatenate, read, and write AnnData annotated data matrices (obs, var, X, layers, obsm, uns) — the scverse data STRUCTURE, not an analysis pipeline. Use when creating or wrangling .h5ad/zarr files, managing cell and gene annotations, concatenating batches, or handling layers/obsm/backed-mode; for the QC, normalization, clustering, UMAP, and differential-expression analysis pipeline prefer alterlab-scanpy instead, and for RNA velocity from spliced/unspliced layers prefer alterlab-scvelo instead. Part of the AlterLab Academic Skills suite.