$npx -y skills add Aperivue/medsci-skills --skill add-journalAdd a new journal to the MedSci Skills profile database. Extracts metadata from author guidelines, generates write-paper (detailed) and find-journal (compact) profiles in canonical format with quality gates.
| 1 | # Add Journal Skill |
| 2 | |
| 3 | You are helping a medical researcher add a new journal to the MedSci Skills profile database. |
| 4 | You generate two reference profiles per journal -- a detailed write-paper profile (~100-150 lines) |
| 5 | and a compact find-journal profile (~30 lines) -- using the journal's author guidelines as |
| 6 | the primary data source. |
| 7 | |
| 8 | ## Communication Rules |
| 9 | |
| 10 | - Communicate with the user in their preferred language. |
| 11 | - Journal names, profile content, and URLs are always in English. |
| 12 | - Medical terminology and field names are always in English. |
| 13 | - Section headings within profiles must exactly match the canonical format defined below. |
| 14 | |
| 15 | ## Key Directories |
| 16 | |
| 17 | Profiles live in one of two tiers — public (shipped with the skill) or user-local private |
| 18 | (per-user, never pushed to git). Pick the correct target in Phase 0 before any extraction. |
| 19 | |
| 20 | ### Public (shipped, must meet verification bar) |
| 21 | - **Write-paper:** `${CLAUDE_SKILL_DIR}/../write-paper/references/journal_profiles/` |
| 22 | - **Find-journal:** `${CLAUDE_SKILL_DIR}/../find-journal/references/journal_profiles/` |
| 23 | |
| 24 | ### User-local private (per-user override, optional) |
| 25 | - **Write-paper:** `$HOME/.claude/private-journal-profiles/write-paper/` |
| 26 | - **Find-journal:** `$HOME/.claude/private-journal-profiles/find-journal/` |
| 27 | |
| 28 | Promotion workflow (private → public) is documented in |
| 29 | `${CLAUDE_SKILL_DIR}/../find-journal/POLICY.md`. |
| 30 | |
| 31 | --- |
| 32 | |
| 33 | ## Phase 0: Input Collection |
| 34 | |
| 35 | ### Required |
| 36 | 1. **Journal name** -- full official name (e.g., "Journal of Clinical Oncology") |
| 37 | 2. **Target tier** -- `public` (shipped) or `private` (user-local only) |
| 38 | |
| 39 | ### Strongly Encouraged |
| 40 | 3. **Author Guidelines URL** -- primary data source for metadata extraction |
| 41 | |
| 42 | ### Optional |
| 43 | 4. **Field focus** -- e.g., cardiology, oncology, surgery, general medicine, medical education, methodology |
| 44 | 5. **Tier estimate** -- Q1 / Q2 / Q3 (user's best guess) |
| 45 | 6. **ISSN** -- if known |
| 46 | |
| 47 | If the user provides only a journal name without a URL, ask for the Author Guidelines URL |
| 48 | before proceeding. The guidelines page is the single most important data source for accurate |
| 49 | profile generation. |
| 50 | |
| 51 | ### Public vs. Private target selection |
| 52 | |
| 53 | If the user does not state the target tier, ASK explicitly before proceeding. Use these |
| 54 | defaults and criteria to guide the question: |
| 55 | |
| 56 | - **Default to `private`** for any journal outside the user's stated area of deep |
| 57 | expertise. Private profiles only live on the user's machine and do not need to clear |
| 58 | the public verification bar line-by-line — but the journal's Author Guidelines page |
| 59 | must still be the primary source (no inference from adjacent journals, no AI policy |
| 60 | copy-paste from the publisher family). |
| 61 | - **`public` is appropriate only when all of the following hold:** |
| 62 | 1. The user intends to contribute the profile upstream for other researchers. |
| 63 | 2. The user has opened the journal's homepage and author guidelines page and can |
| 64 | attest to each field against the live source, OR can paste the relevant sections. |
| 65 | 3. AI policy wording is transcribed from the journal/publisher's own policy page, |
| 66 | not inferred from a sibling journal. |
| 67 | 4. The user has completed or will complete the promotion checklist in |
| 68 | `../find-journal/POLICY.md` before commit. |
| 69 | |
| 70 | If the target is `public` but the user cannot attest to (2) and (3), switch the target |
| 71 | to `private` and tell the user: promotion to public can happen later after the checklist |
| 72 | is cleared. |
| 73 | |
| 74 | --- |
| 75 | |
| 76 | ## Phase 1: Duplicate Check |
| 77 | |
| 78 | Before any data extraction, check whether the journal already exists: |
| 79 | |
| 80 | 1. **Glob all four directories** (public + private across both skills): |
| 81 | ``` |
| 82 | ${CLAUDE_SKILL_DIR}/../write-paper/references/journal_profiles/*.md |
| 83 | ${CLAUDE_SKILL_DIR}/../find-journal/references/journal_profiles/*.md |
| 84 | $HOME/.claude/private-journal-profiles/write-paper/*.md |
| 85 | $HOME/.claude/private-journal-profiles/find-journal/*.md |
| 86 | ``` |
| 87 | |
| 88 | 2. **Filename match:** Normalize the journal name (spaces to underscores, remove special characters) |
| 89 | and check for an exact filename match. |
| 90 | |
| 91 | 3. **Abbreviation match:** Grep existing profiles for the journal's common abbreviation |
| 92 | (e.g., "JCO" for Journal of Clinical Oncology). |
| 93 | |
| 94 | ### If found: |
| 95 | - Report which directory/directories already have the profile, with file paths. |
| 96 | - If present in only one directory, offer to create the missing counterpart. |
| 97 | - If present in both, offer to update the existing profiles or abort. |
| 98 | - Do NOT proceed to Phase 2 without user direction. |
| 99 | |
| 100 | ### If not found: |
| 101 | - Confirm to user: "No existing profile found. Proceeding with data extraction." |
| 102 | |
| 103 | --- |
| 104 | |
| 105 | ## Phase 2: Data Extraction |
| 106 | |
| 107 | ### Path A: WebFetch Available |
| 108 | |
| 109 | 1. Attempt to fetch the Author Gui |