Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Set up and leverage ORCID for researcher identification and profiles
.claude/skills/brycewang-stanford-orcid-integration-guide/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-14 | ✓→✗ | ▼ Worse | 73% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 42% | 0% |
A skill for creating, maintaining, and leveraging ORCID (Open Researcher and Contributor ID) to establish a persistent digital identity, automate publication tracking, and integrate with journals, funders, and institutional systems.
ORCID provides a unique 16-digit identifier (e.g., 0000-0002-1825-0097) that distinguishes you from every other researcher, regardless of name similarity, institutional changes, or transliteration variations. Over 19 million researchers have ORCID iDs, and thousands of publishers and funders now require or support ORCID integration.
Problem: Name ambiguity in scholarly publishing
- "J. Wang" could be thousands of researchers
- Name changes (marriage, legal reasons)
- Transliteration differences (Chinese, Korean, Arabic names)
- Multiple institutional affiliations over a career
Solution: ORCID provides a persistent, unique identifier
- Follows you across institutions and career stages
- Links to your publications, grants, affiliations
- Accepted by 1,500+ publishers and funders
- Free and researcher-controlledStep 1: Register at orcid.org
- Use your institutional email (can add personal email too)
- Choose a password
- Set visibility defaults (public recommended for researchers)
Step 2: Complete your profile
- Name and alternate names (include transliterations)
- Biography (2-3 sentences about your research)
- Education history (degrees, institutions, years)
- Employment history (positions, institutions, years)
- Keywords (5-10 terms describing your research areas)
Step 3: Link your works
- Use "Search & Link" to pull in publications automatically
- Supported sources: Crossref, Scopus, Web of Science, Europe PMC
- Review each imported work before adding
Step 4: Connect to other systems
- Link Scopus Author ID
- Link ResearcherID / Web of Science
- Connect institutional repositorypythondef configure_orcid_visibility(profile_sections: dict) -> dict: """ Recommended ORCID visibility settings for academic researchers. Args: profile_sections: Dict of section names and current visibility """ recommendations = { "name": "public", "biography": "public", "education": "public", "employment": "public", "works": "public", "email": "trusted_parties", "funding": "public", "peer_reviews": "trusted_parties", "keywords": "public" } settings = {} for section, current in profile_sections.items(): recommended = recommendations.get(section, "public") settings[section] = { "current": current, "recommended": recommended, "reason": ( "Public visibility maximizes discoverability" if recommended == "public" else "Shared only with authorized organizations" ) } return settings
Most major publishers now request your ORCID during manuscript submission:
Elsevier: Required for corresponding author
Springer Nature: Required for corresponding author
Wiley: Requested for all authors
PLOS: Required for corresponding author
IEEE: Requested for all authors
Taylor & Francis: Requested for all authorsWhen you provide your ORCID during submission, the publication is automatically added to your ORCID record upon acceptance (via Crossref auto-update).
NIH: ORCID linked via eRA Commons / SciENcv
NSF: ORCID accepted in proposal submissions
ERC: ORCID required for applicants
UKRI: ORCID required for grant holders
ARC (Australia): ORCID required for applicantspythonimport urllib.request import json def get_orcid_works(orcid_id: str) -> list: """ Retrieve the public works list from an ORCID profile. Args: orcid_id: The ORCID iD (e.g., '0000-0002-1825-0097') """ url = f"https://pub.orcid.org/v3.0/{orcid_id}/works" req = urllib.request.Request(url, headers={ "Accept": "application/json" }) response = urllib.request.urlopen(req) data = json.loads(response.read()) works = [] for group in data.get("group", []): summary = group["work-summary"][0] works.append({ "title": summary["title"]["title"]["value"], "type": summary.get("type"), "year": summary.get("publication-date", {}).get("year", {}).get("value"), "journal": summary.get("journal-title", {}).get("value") if summary.get("journal-title") else None, "put_code": summary.get("put-code") }) return works
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→pass | 11,331 | 6,287 | -45% | 1 | 1 | 0% | 1,782 | 2,533 | +42% | 0 | 0 | — |
case-05 | fail→fail | 10,208 | 8,776 | -14% | 1 | 1 | 0% | 1,610 | 2,819 | +75% | 0 | 0 | — |
case-18 | pass→pass | 14,475 | 18,815 | +30% | 1 | 1 | 0% | 2,267 | 4,061 | +79% | 0 | 0 | — |
case-02 | fail→fail | 15,978 | 34,750 | +117% | 1 | 1 | 0% | 2,534 | 6,976 | +175% | 0 | 0 | — |
case-03 | fail→pass | 12,821 | 11,315 | -12% | 1 | 1 | 0% | 1,915 | 2,938 | +53% | 0 | 0 | — |
case-01 | fail→pass | 18,260 | 21,393 | +17% | 1 | 1 | 0% | 3,107 | 3,646 | +17% | 0 | 0 | — |
case-06 | pass→pass | 12,589 | 8,891 | -29% | 1 | 1 | 0% | 1,788 | 2,865 | +60% | 0 | 0 | — |
case-07 | pass→pass | 11,974 | 10,940 | -9% | 1 | 1 | 0% | 1,655 | 2,625 | +59% | 0 | 0 | — |
case-08 | pass→pass | 11,364 | 9,913 | -13% | 1 | 1 | 0% | 1,868 | 2,948 | +58% | 0 | 0 | — |
case-09 | pass→pass | 14,076 | 12,563 | -11% | 1 | 1 | 0% | 2,147 | 3,462 | +61% | 0 | 0 | — |
case-10 | fail→pass | 9,937 | 7,274 | -27% | 1 | 1 | 0% | 1,661 | 2,408 | +45% | 0 | 0 | — |
case-11 | pass→pass | 10,215 | 10,356 | +1% | 1 | 1 | 0% | 1,724 | 3,051 | +77% | 0 | 0 | — |
case-12 | pass→pass | 10,726 | 4,841 | -55% | 1 | 1 | 0% | 1,758 | 2,449 | +39% | 0 | 0 | — |
case-13 | pass→pass | 8,575 | 8,009 | -7% | 1 | 1 | 0% | 1,562 | 2,641 | +69% | 0 | 0 | — |
case-14 | pass→fail | 6,776 | 3,838 | -43% | 1 | 1 | 0% | 1,208 | 2,094 | +73% | 0 | 0 | — |
case-15 | pass→pass | 11,753 | 6,504 | -45% | 1 | 1 | 0% | 1,784 | 2,227 | +25% | 0 | 0 | — |
case-16 | pass→pass | 9,918 | 7,690 | -22% | 1 | 1 | 0% | 1,366 | 2,673 | +96% | 0 | 0 | — |
case-17 | pass→pass | 7,906 | 5,739 | -27% | 1 | 1 | 0% | 1,388 | 2,373 | +71% | 0 | 0 | — |
case-19 | pass→pass | 10,537 | 12,819 | +22% | 1 | 1 | 0% | 2,014 | 3,611 | +79% | 0 | 0 | — |
case-20 | pass→pass | 7,404 | 3,424 | -54% | 1 | 1 | 0% | 1,049 | 1,848 | +76% | 0 | 0 | — |
case-21 | pass→pass | 13,936 | 10,234 | -27% | 1 | 1 | 0% | 2,292 | 3,480 | +52% | 0 | 0 | — |
case-22 | pass→pass | 6,865 | 7,827 | +14% | 1 | 1 | 0% | 1,255 | 2,870 | +129% | 0 | 0 | — |
case-23 | pass→pass | 10,135 | 9,047 | -11% | 1 | 1 | 0% | 1,880 | 2,930 | +56% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.