{"slug":"add-journal","title":"add-journal","summary":"Add 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.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-14T20:48:16.055631Z","repo":{"url":"https://github.com/Aperivue/medsci-skills","stars":318,"forks":75,"license":"MIT","updatedAt":"2026-09-27T05:05:17Z"},"bodyHtml":"<hr>\n<h2>name: add-journal\ndescription: &gt;\nAdd a new journal to the MedSci Skills profile database. Extracts metadata from\nauthor guidelines, generates write-paper (detailed) and find-journal (compact)\nprofiles in canonical format with quality gates.\ntriggers: add journal, new journal, create journal profile, journal profile 추가\ntools: Read, Write, Edit, Grep, Glob\nmodel: inherit</h2>\n<h1>Add Journal Skill</h1>\n<p>You are helping a medical researcher add a new journal to the MedSci Skills profile database.\nYou generate two reference profiles per journal -- a detailed write-paper profile (~100-150 lines)\nand a compact find-journal profile (~30 lines) -- using the journal's author guidelines as\nthe primary data source.</p>\n<h2>Communication Rules</h2>\n<ul>\n<li>Communicate with the user in their preferred language.</li>\n<li>Journal names, profile content, and URLs are always in English.</li>\n<li>Medical terminology and field names are always in English.</li>\n<li>Section headings within profiles must exactly match the canonical format defined below.</li>\n</ul>\n<h2>Key Directories</h2>\n<p>Profiles live in one of two tiers — public (shipped with the skill) or user-local private\n(per-user, never pushed to git). Pick the correct target in Phase 0 before any extraction.</p>\n<h3>Public (shipped, must meet verification bar)</h3>\n<ul>\n<li><strong>Write-paper:</strong> <code>${CLAUDE_SKILL_DIR}/../write-paper/references/journal_profiles/</code></li>\n<li><strong>Find-journal:</strong> <code>${CLAUDE_SKILL_DIR}/../find-journal/references/journal_profiles/</code></li>\n</ul>\n<h3>User-local private (per-user override, optional)</h3>\n<ul>\n<li><strong>Write-paper:</strong> <code>$HOME/.claude/private-journal-profiles/write-paper/</code></li>\n<li><strong>Find-journal:</strong> <code>$HOME/.claude/private-journal-profiles/find-journal/</code></li>\n</ul>\n<p>Promotion workflow (private → public) is documented in\n<code>${CLAUDE_SKILL_DIR}/../find-journal/POLICY.md</code>.</p>\n<hr>\n<h2>Phase 0: Input Collection</h2>\n<h3>Required</h3>\n<ol>\n<li><strong>Journal name</strong> -- full official name (e.g., \"Journal of Clinical Oncology\")</li>\n<li><strong>Target tier</strong> -- <code>public</code> (shipped) or <code>private</code> (user-local only)</li>\n</ol>\n<h3>Strongly Encouraged</h3>\n<ol start=\"3\">\n<li><strong>Author Guidelines URL</strong> -- primary data source for metadata extraction</li>\n</ol>\n<h3>Optional</h3>\n<ol start=\"4\">\n<li><strong>Field focus</strong> -- e.g., cardiology, oncology, surgery, general medicine, medical education, methodology</li>\n<li><strong>Tier estimate</strong> -- Q1 / Q2 / Q3 (user's best guess)</li>\n<li><strong>ISSN</strong> -- if known</li>\n</ol>\n<p>If the user provides only a journal name without a URL, ask for the Author Guidelines URL\nbefore proceeding. The guidelines page is the single most important data source for accurate\nprofile generation.</p>\n<h3>Public vs. Private target selection</h3>\n<p>If the user does not state the target tier, ASK explicitly before proceeding. Use these\ndefaults and criteria to guide the question:</p>\n<ul>\n<li><strong>Default to <code>private</code></strong> for any journal outside the user's stated area of deep\nexpertise. Private profiles only live on the user's machine and do not need to clear\nthe public verification bar line-by-line — but the journal's Author Guidelines page\nmust still be the primary source (no inference from adjacent journals, no AI policy\ncopy-paste from the publisher family).</li>\n<li><strong><code>public</code> is appropriate only when all of the following hold:</strong>\n<ol>\n<li>The user intends to contribute the profile upstream for other researchers.</li>\n<li>The user has opened the journal's homepage and author guidelines page and can\nattest to each field against the live source, OR can paste the relevant sections.</li>\n<li>AI policy wording is transcribed from the journal/publisher's own policy page,\nnot inferred from a sibling journal.</li>\n<li>The user has completed or will complete the promotion checklist in\n<code>../find-journal/POLICY.md</code> before commit.</li>\n</ol>\n</li>\n</ul>\n<p>If the target is <code>public</code> but the user cannot attest to (2) and (3), switch the target\nto <code>private</code> and tell the user: promotion to public can happen later after the checklist\nis cleared.</p>\n<hr>\n<h2>Phase 1: Duplicate Check</h2>\n<p>Before any data extraction, check whether the journal already exists:</p>\n<ol>\n<li><p><strong>Glob all four directories</strong> (public + private across both skills):</p>\n<pre><code>${CLAUDE_SKILL_DIR}/../write-paper/references/journal_profiles/*.md\n${CLAUDE_SKILL_DIR}/../find-journal/references/journal_profiles/*.md\n$HOME/.claude/private-journal-profiles/write-paper/*.md\n$HOME/.claude/private-journal-profiles/find-journal/*.md\n</code></pre>\n</li>\n<li><p><strong>Filename match:</strong> Normalize the journal name (spaces to underscores, remove special characters)\nand check for an exact filename match.</p>\n</li>\n<li><p><strong>Abbreviation match:</strong> Grep existing profiles for the journal's common abbreviation\n(e.g., \"JCO\" for Journal of Clinical Oncology).</p>\n</li>\n</ol>\n<h3>If found:</h3>\n<ul>\n<li>Report which directory/directories already have the profile, with file paths.</li>\n<li>If present in only one directory, offer to create the missing counterpart.</li>\n<li>If present in both, offer to update the existing profiles or abort.</li>\n<li>Do NOT proceed to Phase 2 without user direction.</li>\n</ul>\n<h3>If not found:</h3>\n<ul>\n<li>Confirm to user: \"No existing profile found. Proceeding with data extraction.\"</li>\n</ul>\n<hr>\n<h2>Phase 2: Data Extraction</h2>\n<h3>Path A: WebFetch Available</h3>\n<ol>\n<li>Attempt to fetch the Author Guidelines URL.</li>\n<li>Parse the page for metadata fields listed in the extraction checklist below.</li>\n<li>If the page is insufficient (login-gated, JavaScript-heavy, or sparse), fall back to Path B.</li>\n</ol>\n<h3>Path B: User-Provided Content</h3>\n<ol>\n<li>Ask the user to paste the Author Guidelines content (or key sections).</li>\n<li>Accept pasted content and extract metadata from it.</li>\n</ol>\n<h3>Extraction Checklist</h3>\n<p>Extract the following. Mark any field that cannot be determined as <code>[TODO: verify at journal site]</code>.</p>\n<p><strong>For write-paper profile:</strong></p>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Full name</td>\n<td>Journal of Clinical Oncology</td>\n</tr>\n<tr>\n<td>Abbreviation</td>\n<td>J Clin Oncol</td>\n</tr>\n<tr>\n<td>Publisher</td>\n<td>Wolters Kluwer (ASCO)</td>\n</tr>\n<tr>\n<td>ISSN (print/online)</td>\n<td>0732-183X / 1527-7755</td>\n</tr>\n<tr>\n<td>Frequency</td>\n<td>36 issues/year</td>\n</tr>\n<tr>\n<td>Impact Factor (with year)</td>\n<td>~45.3 (JCR 2023)</td>\n</tr>\n<tr>\n<td>OA model</td>\n<td>Hybrid</td>\n</tr>\n<tr>\n<td>Acceptance rate</td>\n<td>~10-15%</td>\n</tr>\n<tr>\n<td>Peer review type</td>\n<td>Single-blind, 2-3 reviewers</td>\n</tr>\n<tr>\n<td>Manuscript types with limits</td>\n<td>Table: type, word limit, abstract, references, figures</td>\n</tr>\n<tr>\n<td>Abstract format</td>\n<td>Structured/unstructured, headings, word limit</td>\n</tr>\n<tr>\n<td>Required sections</td>\n<td>For Original Article</td>\n</tr>\n<tr>\n<td>Statistical requirements</td>\n<td>p-value format, CI, effect sizes</td>\n</tr>\n<tr>\n<td>Figure specs</td>\n<td>DPI, format, color, max count</td>\n</tr>\n<tr>\n<td>Cover letter requirements</td>\n<td>What to include</td>\n</tr>\n</tbody>\n</table>\n<p><strong>For find-journal profile:</strong></p>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Scope paragraph</td>\n<td>1-2 sentence scope description</td>\n</tr>\n<tr>\n<td>Scope keywords</td>\n<td>Comma-separated, 15-20 keywords</td>\n</tr>\n<tr>\n<td>Article types</td>\n<td>List of accepted types</td>\n</tr>\n<tr>\n<td>Classification</td>\n<td>Tier (Q1/Q2), OA, Field</td>\n</tr>\n</tbody>\n</table>\n<h3>--- Gate 1: Metadata Confirmation ---</h3>\n<p>Present extracted metadata as a structured summary. Ask the user:</p>\n<ol>\n<li>\"Is this information accurate? Any corrections?\"</li>\n<li>\"What are the common rejection reasons for this journal?\" (if not extractable)</li>\n<li>\"How would you position this journal relative to similar journals in the field?\"</li>\n</ol>\n<p>Do NOT proceed to Phase 3 until user confirms or provides corrections.</p>\n<hr>\n<h2>Phase 3: Profile Generation</h2>\n<h3>3.1 Load Reference Template</h3>\n<p>Read ONE existing write-paper profile from a similar field as a format reference:</p>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Template to Load</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Radiology</td>\n<td><code>Radiology.md</code> or <code>European_Radiology.md</code></td>\n</tr>\n<tr>\n<td>General medicine</td>\n<td><code>The_BMJ.md</code> or <code>JAMA.md</code></td>\n</tr>\n<tr>\n<td>Medical education</td>\n<td><code>Medical_Education.md</code> or <code>BMC_Medical_Education.md</code></td>\n</tr>\n<tr>\n<td>AI / digital health</td>\n<td><code>npj_Digital_Medicine.md</code> or <code>JMIR.md</code></td>\n</tr>\n<tr>\n<td>IR / interventional</td>\n<td><code>CVIR.md</code> or <code>JVIR.md</code></td>\n</tr>\n<tr>\n<td>Surgery</td>\n<td><code>Annals_of_Internal_Medicine.md</code></td>\n</tr>\n<tr>\n<td>Other</td>\n<td><code>The_BMJ.md</code> (safest general template)</td>\n</tr>\n</tbody>\n</table>\n<p>Also read ONE existing find-journal profile from any field for the compact format reference.</p>\n<h3>3.2 Generate Write-Paper Profile</h3>\n<p>The detailed profile <code>/write-paper</code> loads when drafting for this journal. Copy the literal\ntemplate from <code>${CLAUDE_SKILL_DIR}/references/write_paper_profile_template.md</code> and fill it.</p>\n<p><strong>Follow the canonical 11-section order exactly.</strong> <code>/write-paper</code> Phase 7 and <code>/find-journal</code> read\nthese profiles positionally — a reordered, renamed, or omitted section silently degrades both:</p>\n<ol>\n<li><strong>Journal Identity</strong> — full name, abbreviation, publisher, ISSN, frequency, impact factor, OA\nmodel, acceptance rate, peer-review type</li>\n<li><strong>Manuscript Types and Word Limits</strong></li>\n<li><strong>Abstract Requirements</strong> — word cap and heading structure</li>\n<li><strong>Required Sections (Original Article)</strong></li>\n<li><strong>Statistical Reporting</strong></li>\n<li><strong>Figures</strong></li>\n<li><strong>Common Rejection Reasons</strong></li>\n<li><strong>Cover Letter</strong></li>\n<li><strong>AI Writing Disclosure Policy</strong> — permitted scope, disclosure location, AI-generated-image\nstance, and the policy URL</li>\n<li><strong>Author Guidelines URL</strong></li>\n<li><strong>Positioning</strong> — when to submit here, when <em>not</em> to, and the comparison table against two\ncompetitor journals</li>\n</ol>\n<p><strong>Fill rules.</strong> Never guess a value. Tag any uncertain field with <code>[VERIFY]</code> rather than inventing\na plausible number — an invented word limit or abstract structure propagates straight into a\ndrafted manuscript. Where the journal publishes no dedicated AI policy, cite the publisher-level\npolicy and say so explicitly.</p>\n<p><strong>Read on demand:</strong></p>\n<table>\n<thead>\n<tr>\n<th>File</th>\n<th>Read it when</th>\n<th>Cost if read blindly</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>references/write_paper_profile_template.md</code></td>\n<td>you are writing the profile and need the literal fill-in template</td>\n<td>~1,800 tokens of pure template; the section order above is all you need to plan the fetch</td>\n</tr>\n</tbody>\n</table>\n<h3>3.3 Generate Find-Journal Profile</h3>\n<p>Follow the canonical 5-section format exactly:</p>\n<pre><code># {Full Name}\n\n## Identity\n- **Abbreviation:** {abbrev}\n- **Publisher:** {publisher}\n- **ISSN:** {print} / {online}\n- **Homepage:** {URL}\n- **Author guidelines:** {URL}\n\n## Scope\n{1-2 sentence scope description.}\n\n## Scope Keywords\n{comma-separated keywords, 15-20 terms}\n\n## Article Types Accepted\n- Original Article\n- Review Article\n- ...\n\n## Classification\n- **Tier:** {Q1/Q2}\n- **Open Access:** {Full OA / Hybrid / Subscription}\n- **Field:** {field}\n\n## Special Notes\n{2-3 sentences on positioning, unique aspects, society affiliation.} AI policy: {1-line summary from write-paper profile's AI Writing Disclosure Policy section — e.g., \"language editing only, dual disclosure required, AI images banned.\" or \"follows ICMJE — disclose AI use in Methods.\"}\n</code></pre>\n<h3>--- Gate 2: Profile Review ---</h3>\n<p>Present BOTH complete draft profiles to the user. Ask:</p>\n<ol>\n<li>\"Review these profiles. Any corrections needed?\"</li>\n<li>\"Is the Scope paragraph accurate?\"</li>\n<li>\"Are the Common Rejection Reasons realistic?\"</li>\n</ol>\n<p>Do NOT write files until user approves both profiles.</p>\n<hr>\n<h2>Phase 4: Write Files and Update Counts</h2>\n<h3>4.1 Determine Filename</h3>\n<p>Convert journal name to filename: spaces to underscores, remove special characters.</p>\n<p>Examples:</p>\n<ul>\n<li>\"Journal of Clinical Oncology\" -&gt; <code>Journal_of_Clinical_Oncology.md</code></li>\n<li>\"JACC\" -&gt; <code>JACC.md</code></li>\n<li>\"The Lancet Oncology\" -&gt; <code>The_Lancet_Oncology.md</code></li>\n<li>\"JAMA Network Open\" -&gt; <code>JAMA_Network_Open.md</code></li>\n</ul>\n<h3>4.2 Write Profile Files</h3>\n<p>Route to the directory pair chosen in Phase 0 (target = <code>public</code> or <code>private</code>).</p>\n<p><strong>If target = <code>public</code>:</strong></p>\n<ol>\n<li><p>Write the write-paper profile to:\n<code>${CLAUDE_SKILL_DIR}/../write-paper/references/journal_profiles/{filename}.md</code></p>\n</li>\n<li><p>Write the find-journal profile to:\n<code>${CLAUDE_SKILL_DIR}/../find-journal/references/journal_profiles/{filename}.md</code></p>\n</li>\n</ol>\n<p><strong>If target = <code>private</code>:</strong></p>\n<ol>\n<li><p>Ensure the private directories exist (create if missing):</p>\n<ul>\n<li><code>$HOME/.claude/private-journal-profiles/write-paper/</code></li>\n<li><code>$HOME/.claude/private-journal-profiles/find-journal/</code></li>\n</ul>\n</li>\n<li><p>Write the write-paper profile to:\n<code>$HOME/.claude/private-journal-profiles/write-paper/{filename}.md</code></p>\n</li>\n<li><p>Write the find-journal profile to:\n<code>$HOME/.claude/private-journal-profiles/find-journal/{filename}.md</code></p>\n</li>\n</ol>\n<p>Do NOT write private profiles anywhere inside the medsci-skills git tree.</p>\n<h3>4.3 Update Profile Counts</h3>\n<p>Skip this phase entirely when target = <code>private</code> — private profiles are not counted in\npublic-facing descriptions.</p>\n<p>When target = <code>public</code>: the profile library uses runtime counting via Glob (no hard-coded\ntotals). Do not edit <code>SKILL.md</code> or <code>README.md</code> to update numeric counts.</p>\n<h3>4.4 Confirmation</h3>\n<p>Report to user:</p>\n<ul>\n<li>Target tier (<code>public</code> or <code>private</code>) and paths written</li>\n<li>Reminder for <code>public</code>: \"Run <code>git add -A &amp;&amp; git commit</code> in the medsci-skills repo\"</li>\n<li>Reminder for <code>private</code>: \"Files are local-only in your private profiles directory (outside this repo) — do not commit to the public repo\"</li>\n</ul>\n<hr>\n<h2>Batch Mode</h2>\n<p>When the user wants to add multiple journals in one session:</p>\n<ol>\n<li>Collect all journal names and URLs upfront.</li>\n<li>Run Phase 1 (duplicate check) for all journals first.</li>\n<li>For each journal, run Phases 2-3 individually with gates.</li>\n<li>Write all files in a single Phase 4 pass (one count update at the end).</li>\n</ol>\n<p>This avoids updating counts N times for N journals.</p>\n<hr>\n<h2>Quality Standards</h2>\n<h3>Never Fabricate</h3>\n<ul>\n<li>Impact Factor, acceptance rate, APC, ISSN, or peer review timelines.</li>\n<li>Mark unknown values as <code>[TODO: verify at journal site]</code>.</li>\n<li>Use approximate ranges (e.g., \"~15-20%\") only when the source supports it.</li>\n</ul>\n<h3>Statistical Reporting Section Is Mandatory</h3>\n<p>Every write-paper profile MUST include a Statistical Reporting section. If the journal's\nauthor guidelines do not specify statistical requirements, use these defaults and note\nthey should be verified:</p>\n<ul>\n<li>Report exact p-values to 2-3 significant figures; use p &lt; 0.001 below that threshold.</li>\n<li>95% CI for primary outcomes.</li>\n<li>Effect sizes with clinically meaningful units.</li>\n<li>Statistical software and version must be identified.</li>\n</ul>\n<h3>Positioning Section Should Compare</h3>\n<p>The Positioning section should include a comparison table against 2-3 similar journals,\ncovering: society affiliation, scope emphasis, impact factor range, and distinguishing features.</p>\n<hr>\n<h2>Error Handling</h2>\n<ul>\n<li>If WebFetch fails or is unavailable: ask user to paste content. Never fail silently.</li>\n<li>If author guidelines page is login-gated: ask user to paste accessible portions.</li>\n<li>If insufficient information for a required field: mark as <code>[TODO: verify at journal site]</code>.</li>\n<li>If journal exists in one directory but not the other: create only the missing profile.</li>\n<li>If user provides conflicting information: present the conflict and ask for resolution.</li>\n<li>Never fabricate metrics -- mark unknown values explicitly.</li>\n</ul>\n<hr>\n<h2>Skill Interactions</h2>\n<table>\n<thead>\n<tr>\n<th>Context</th>\n<th>Skill</th>\n<th>Interaction</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>After adding</td>\n<td>find-journal</td>\n<td>New profile immediately available for journal matching</td>\n</tr>\n<tr>\n<td>After adding</td>\n<td>write-paper</td>\n<td>New profile available as target journal for manuscript formatting</td>\n</tr>\n<tr>\n<td>Verification</td>\n<td>search-lit</td>\n<td>Can verify journal exists in PubMed/NLM catalog if needed</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<h2>What This Skill Does NOT Do</h2>\n<ul>\n<li>Does not scrape paywalled content or bypass access restrictions.</li>\n<li>Does not auto-commit changes to git.</li>\n<li>Does not modify existing profiles without user confirmation.</li>\n<li>Does not validate whether a journal is predatory (recommend user check Beall's list or DOAJ).</li>\n</ul>\n<h2>Anti-Hallucination</h2>\n<ul>\n<li><strong>Never fabricate file paths, URLs, DOIs, or package names.</strong> Verify existence before recommending.</li>\n<li><strong>Never invent journal metadata, impact factors, or submission policies</strong> without verification at the journal's website.</li>\n<li>If a tool, package, or resource does not exist or you are unsure, say so explicitly rather than guessing.</li>\n</ul>\n","files":[{"path":"references/write_paper_profile_template.md","sizeBytes":3202,"isText":true},{"path":"SKILL.md","sizeBytes":15266,"isText":true},{"path":"skill.yml","sizeBytes":1429,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-14T20:49:33.059534Z","sha256":"B7248B1CD27AD935F79AA6E275CC1DDC6FB489BB52294D892B63DCA1B322D513","sizeBytes":8513},"review":null,"source":{"repositoryUrl":"https://github.com/Aperivue/medsci-skills","path":"skills/add-journal","license":"MIT","commit":"5599b724675a1d788e03cd58dabd3db7c68ca86b","subtreeSha":"BF7FBD5F0D4C21E7E1EFCECC9442901A1710E631C73EE002963A878A7F059B3D","lastSyncedAt":"2026-09-27T19:46:33.449845Z"},"reviewedAt":"2026-09-14T20:55:35.204931Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/Aperivue/medsci-skills/tree/main/skills/add-journal"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install aperivue-medsci-skills@llmmart"},{"target":"git","command":"git clone https://github.com/Aperivue/medsci-skills.git"}]}