Skip to content
Back to skills

Discover Academic Skills

ASecurity

Discover research/academic agent-skills from skills.sh (and user-supplied candidates), filter them through strict hard gates plus a strict academic-relevance gate, score survivors with a rubric, and hand back a ranked report with reasons. Use when the user wants to find, discover, or scout new academic/research skills to add to the hub, evaluate a skill they saw on social media, or refresh the discovery ledger.

  • 2 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added October 3, 2026
ai-agentspythonrustbashnodegitapifrontenddevops

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 3, 2026

npx -y skills add pengqianhan/AI-Human-Research-OS --skill discover-academic-skills --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Discover Academic Skills?

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

Security grade badge for Discover Academic Skills
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pengqianhan-discover-academic-skills/badge)](https://www.skillsdirectory.com/skills/pengqianhan-discover-academic-skills)

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: discover-academic-skills
description: Discover research/academic agent-skills from skills.sh (and user-supplied candidates), filter them through strict hard gates plus a strict academic-relevance gate, score survivors with a rubric, and hand back a ranked report with reasons. Use when the user wants to find, discover, or scout new academic/research skills to add to the hub, evaluate a skill they saw on social media, or refresh the discovery ledger.
---

# Discover Academic Skills

A **discovery scout**, not an auto-collector. It surfaces candidate research
skills with scores and reasons; **ingestion is always human-gated** (per
[ADR 0001](../../docs/adr/0001-external-skill-intake-and-sync.md)). The scout
never installs or vendors anything.

- **Scope**: discovery + strict filtering + scoring of academic/research skills
  from the skills.sh registry and from candidates the user pastes (e.g. from
  social media). Anything the user accepts is later vendored **by hand** into
  [`collected-skills/`](../../collected-skills/index.md) via the normal intake.
- **Inputs**: none required (runs a default academic query set); optional
  `--candidate owner/repo@skill`, `--queries`, `--min-installs`, `--include-seen`.
- **Outputs**: a ranked Markdown report in `scratch/skill-discovery/` (gitignored),
  the top picks surfaced inline, and new rows appended to the committed
  [`discovery-ledger.md`](../../discovery-ledger.md).
- **Limitations**: `npx skills find` is fuzzy and skills.sh coverage is partial;
  the strict relevance gate favours precision over recall (it *will* miss some
  real-but-unlabelled skills — by design, to cut review burden). The skills.sh
  JSON API (`/api/v1`) needs a Vercel OIDC token and is **not** used; the
  unauthenticated CLI is the discovery channel.

## Prerequisites

- **Node / npx** — for `npx skills find` (unauthenticated; no token).
- **`gh` authenticated** — for the license hard gate and repo metadata. Without
  it the license gate is skipped and every candidate is flagged
  `license-unverified` for you to check by hand (nothing is silently dropped).

## Pipeline (deterministic gates → relevance gate → rubric)

### 1. Gather + deterministic hard gates (script)

Run the helper — it queries skills.sh, dedupes, suppresses ledger entries, and
applies the deterministic gates:

```bash
python research-skills-hub/open-paper-skills/discover-academic-skills/scripts/discover.py
```

Deterministic gates it applies (a failure drops the candidate into the report's
"dropped" appendix with a reason — never silently):

- **Install floor** — `< 50 installs` dropped (tune with `--min-installs`; manual
  `--candidate` entries bypass this).
- **License present** — no license → dropped (default all-rights-reserved can't be
  redistributed). Permissive (MIT/Apache/BSD/…) passes; copyleft passes **flagged**
  `copyleft-license`; unrecognised passes flagged for your check.
- **Ledger suppression** — anything already decided in `discovery-ledger.md` is
  dropped (use `--include-seen` to override). This is what makes repeated runs
  quieter over time.
- **Hub-overlap hint** — candidates whose name overlaps an existing hub skill are
  flagged `possible-overlap:<name>` (not dropped — you may want the better one).

The script writes `scratch/skill-discovery/<date>-candidates.raw.json` with a
`kept` list (for scoring) and a `dropped` list (for the appendix).

### 2. Academic-relevance gate — STRICT (agent)

For every `kept` candidate, read its `SKILL.md` (open the skills.sh page at the
candidate `url`, or run `npx skills use owner/repo@skill` to print the skill
prompt) and decide, strictly:

> **Would a researcher use this *in a research workflow*?** It must clearly match
> the IN list. Borderline or merely dual-use → **reject** (move to a
> "dropped — off scope" section with a one-line reason).

**IN (pass):** literature discovery/reading (arXiv, OpenAlex, Semantic Scholar,
PubMed, bioRxiv); citation/reference management (Zotero, BibTeX); academic writing
(LaTeX papers, venue templates, submission formatting); research data / experiments
/ reproducibility / baseline tables; **paper-oriented** figures and diagrams;
systematic review / meta-analysis / bibliometrics; discipline-specific science
tooling and ML/AI research workflows.

**OUT (reject):** general software engineering, web/frontend, DevOps, marketing,
generic productivity. **Dual-use tools** (generic `latex`, `diagram`, `pdf`,
`search`) are rejected unless the SKILL.md gives an explicit research framing.

Precision over recall is intended: a strict gate keeps your review list almost
entirely genuine research skills. The vocabulary behind this gate is in
[`../../CONTEXT.md`](../../CONTEXT.md).

### 3. Rubric scoring (agent)

Score each survivor on four dimensions, 0–5 each, weighted into a 0–100 composite:

| Dimension | Weight | What to judge |
|---|---|---|
| Research value & impact | 35% | how central/useful to a research workflow (not "is it relevant" — "how much does it matter") |
| Quality & maturity | 25% | SKILL.md clarity/completeness, install count, stars, recency of `pushed_at` |
| Safety & trust | 25% | read the bundled scripts: does it run arbitrary code, reach the network, need credentials? author track record |
| Fit & uniqueness | 15% | fills a gap vs the hub / complements the OS; overlap with an existing skill lowers this |

Tiers by composite: **≥80 strongly recommend · 65–79 consider · 50–64 borderline
· <50 low (appendix only)**. License is not scored (it is a gate/flag).

### 4. Report + ledger (agent)

Write `scratch/skill-discovery/<date>-candidates.md`:

- Grouped by tier (strongly recommend → consider → borderline). Each entry:
  composite score, the four sub-scores, a 2–3 sentence reason, and any flags
  (`copyleft-license`, `license-<spdx>`, `possible-overlap:…`, `license-unverified`).
- Appendices: **dropped at hard gates** and **dropped — off scope**, each with the
  one-line reason. Do not silently omit anything.

Then **surface every ≥80 candidate inline** to the user, and **append every
surfaced candidate** to [`discovery-ledger.md`](../../discovery-ledger.md) with
disposition `surfaced`. When the user later accepts/rejects one, update its row to
`accepted` (note where it was vendored) or `rejected` (note why). Ledger row shape:

```
| owner/repo@skill | <date> | surfaced | <score> | <one-line reason> |
```

## Accepting a candidate

Accepting is manual and follows the existing cherry-pick intake: read the whole
`SKILL.md` and every bundled script, confirm the license, copy it into
`collected-skills/<skill>/`, register it with the `skill-organizer` skill
(source URL + license), then run `./verify.sh`. If a whole repo is worth tracking
wholesale, promote it to its own vendored-mirror collection like `mattpocock-skills`
instead (see ADR 0001).

## Manual candidate (social-media finds)

Feed a skill you saw elsewhere through the exact same gates and rubric:

```bash
python .../discover.py --candidate owner/repo@skill
```

It skips the install floor but runs the license gate, relevance gate, and rubric
like any other candidate.

Files in this skill

  • SKILL.md7 KB
  • scripts/discover.py11.9 KB

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.