$npx -y skills add ai4protein/VenusFactory2 --skill nature_writingDraft, restructure, or plan Nature-style manuscript sections from author-provided claims, results, figures, notes, or Chinese drafts. Use when the user wants to write or rebuild an abstract, introduction, related-work, method, experiments, discussion, conclusion, title, or full m
| 1 | # Nature-Style Scientific Writing — Router |
| 2 | |
| 3 | This skill is split into two layers: |
| 4 | |
| 5 | - A **static layer** under `static/` that holds versioned, reusable content fragments (core stance + workflow, paper-type playbooks, per-section drafting guidance, language-specific rules, per-journal style). |
| 6 | - A **dynamic layer** (this file plus `manifest.yaml`) that detects the request's axes and loads only the fragments needed for the current job. |
| 7 | |
| 8 | Do not try to apply the drafting logic from memory or from this router. Always load fragments from disk as described below. |
| 9 | |
| 10 | ## Routing protocol |
| 11 | |
| 12 | Follow these five steps every time the skill is invoked. |
| 13 | |
| 14 | ### 1. Load the manifest and the core layer |
| 15 | |
| 16 | Read [manifest.yaml](manifest.yaml). It declares the axes (`paper_type`, `section`, `language`, `journal`), the allowed values, and the file paths each value maps to. |
| 17 | |
| 18 | Also read every file listed under `always_load`. These hold the default stance, writing workflow, and output format that apply to every drafting job. |
| 19 | |
| 20 | ### 2. Detect the axis values for this request |
| 21 | |
| 22 | For each axis in the manifest, decide the value using the manifest's `detect:` hint and the user's input: |
| 23 | |
| 24 | - `paper_type` — research / methods / hypothesis / algorithmic / review. Default: research. |
| 25 | - `section` — abstract / intro / related-work / method / experiments / discussion / conclusion / title. May be multiple. Ask the user if it is ambiguous and matters for the draft. |
| 26 | - `language` — en or zh-to-en. Detect from the user's notes themselves. |
| 27 | - `journal` — nature / nat-comms / generic. Default: generic. If the user names a Nature subjournal, treat it as `nature`. |
| 28 | |
| 29 | State the detected axis values in one short line to the user before drafting, so they can correct you cheaply. |
| 30 | |
| 31 | ### 3. Load the matching fragments |
| 32 | |
| 33 | For each axis value, Read the file mapped in the manifest. Skip the `section` axis only when the user has explicitly asked for a free-floating argument paragraph with no section context. |
| 34 | |
| 35 | Do **not** read every fragment in `static/`. Load only what step 2 selected. |
| 36 | |
| 37 | ### 4. Draft using the loaded material |
| 38 | |
| 39 | Apply the loaded fragments in this priority order: |
| 40 | |
| 41 | 1. Core stance + intake (`core/stance.md`) — surface missing claim / evidence / boundary before drafting. |
| 42 | 2. Paper-type playbook — argument chain, drafting order. |
| 43 | 3. Section-specific drafting rules and structure. |
| 44 | 4. Journal-specific framing and constraints. |
| 45 | 5. Language-specific sentence and paragraph rules (apply last). |
| 46 | |
| 47 | Run the 8-step workflow in `core/workflow.md` end-to-end. Do not skip steps 1-3 (planning) just because the user asked for prose immediately — write the one-sentence argument first. |
| 48 | |
| 49 | If essential evidence or boundary is missing, write a placeholder and list it under `Assumptions or missing inputs:` instead of inventing content. |
| 50 | |
| 51 | ### 5. Reach for references only when needed |
| 52 | |
| 53 | The files under `references/` are deep references and the example library, not defaults. Open them on demand per the `references.on_demand` table in the manifest. Typical triggers: |
| 54 | |
| 55 | - The user asks for a concrete example or template → `references/examples/index.md`. |
| 56 | - A section's draft has structural problems that the section fragment alone does not explain → the matching `references/<section>.md`. |
| 57 | - The user needs a broad-audience `Nature` abstract opening or asks about a `summary paragraph` → `references/nature-summary-paragraph.md`. |
| 58 | - The user asks "does this paragraph flow?" → `references/paragraph-flow.md`. |
| 59 | - The user asks for a self-review or rejection-risk audit → `references/paper-review.md`. |
| 60 | |
| 61 | ## Why this split |
| 62 | |
| 63 | - The static layer is versioned and reviewable. Adding a new journal style, paper type, or section is one new file plus one manifest line. |
| 64 | - The dynamic layer keeps each invocation cheap: only the fragments relevant to this draft enter context, instead of the full multi-thousand-line reference set. |
| 65 | - The router itself is short on purpose. Update fragments, not this file, when adding scope. |
| 66 | - This structure mirrors `nature-polishing` so shared content can later be lifted into a `_shared/` layer used by both skills. |