Scientific Writing Elite
Enterprise-grade skill for core, skill, deep, research. Includes structured workflows, validation checks, and reusable patterns for scientific.
Scientific Writing Elite
Produce structured scientific documents — manuscripts, grant proposals, literature reviews, and reports — using AI-assisted deep research, citation management, and field-appropriate formatting. This skill covers document structure conventions, writing style for different sections, reference integration, and automated formatting for journal submission.
When to Use This Skill
Choose Scientific Writing Elite when you need to:
- Draft or revise scientific manuscripts following journal-specific formatting guidelines
- Write grant proposals with structured specific aims and research plans
- Generate literature review sections with properly formatted citations
- Produce technical reports with consistent style and reproducible formatting
Consider alternatives when:
- You need to create visual figures for papers (use Scientific Visualization System)
- You need slide decks for presentations (use Scientific Slides Elite)
- You need systematic literature search and retrieval (use Research Lookup Elite)
Quick Start
pip install jinja2 pyyaml bibtexparser
import jinja2 import yaml # Define manuscript structure manuscript = { "title": "CRISPR-Cas9 Editing Efficiency in Primary Human T Cells", "authors": [ {"name": "J. Smith", "affiliation": "Dept. of Immunology, MIT"}, {"name": "A. Chen", "affiliation": "Broad Institute"}, ], "sections": { "abstract": { "background": "CRISPR-Cas9 gene editing in primary human T cells remains " "limited by delivery efficiency and off-target effects.", "methods": "We optimized electroporation parameters and guide RNA design " "for CD4+ and CD8+ T cell subsets from 12 healthy donors.", "results": "Our optimized protocol achieved 89% knockout efficiency " "(SD=4.2%) with <0.1% detectable off-target editing.", "conclusion": "Parameter optimization enables reliable, high-efficiency " "gene editing in primary T cells for immunotherapy applications." }, "introduction": "...", "methods": "...", "results": "...", "discussion": "..." }, "references_file": "references.bib" } # Structured abstract template abstract_template = jinja2.Template(""" ## Abstract **Background:** {{ abstract.background }} **Methods:** {{ abstract.methods }} **Results:** {{ abstract.results }} **Conclusion:** {{ abstract.conclusion }} """) rendered = abstract_template.render(abstract=manuscript["sections"]["abstract"]) print(rendered)
Core Concepts
Manuscript Section Structure
| Section | Purpose | Key Guidelines |
|---|---|---|
| Abstract | Summarize entire paper | 150-300 words, structured (Background/Methods/Results/Conclusion) |
| Introduction | Establish context and gap | Funnel from broad to specific, end with hypothesis/aims |
| Methods | Enable reproducibility | Past tense, passive voice acceptable, include all parameters |
| Results | Present findings | Past tense, reference all figures/tables, no interpretation |
| Discussion | Interpret findings | Compare with literature, acknowledge limitations, future directions |
| References | Credit sources | Follow journal citation style (APA, Vancouver, Nature) |
Citation Manager Integration
import bibtexparser def load_references(bib_file): """Load and index BibTeX references for citation.""" with open(bib_file, 'r') as f: bib_db = bibtexparser.load(f) refs = {} for entry in bib_db.entries: key = entry['ID'] author = entry.get('author', 'Unknown').split(' and ')[0].split(',')[0] year = entry.get('year', 'n.d.') title = entry.get('title', '').strip('{}') journal = entry.get('journal', '') refs[key] = { 'inline': f"({author} et al., {year})", 'full': f"{entry.get('author','')}, {title}. {journal} ({year})", 'entry': entry } return refs def cite(refs, key): """Return inline citation for a reference key.""" if key not in refs: return f"[MISSING: {key}]" return refs[key]['inline'] def format_bibliography(refs, cited_keys, style='apa'): """Format bibliography for cited references only.""" bib_entries = [] for i, key in enumerate(sorted(cited_keys), 1): if key in refs: bib_entries.append(f"{i}. {refs[key]['full']}") return '\n'.join(bib_entries) # Usage refs = load_references('references.bib') text = f"Previous work {cite(refs, 'smith2023')} demonstrated that..." print(text)
Grant Proposal Builder
from dataclasses import dataclass from typing import List @dataclass class SpecificAim: title: str rationale: str approach: str expected_outcomes: List[str] potential_pitfalls: List[str] alternatives: List[str] def format_specific_aims(aims: List[SpecificAim], project_title: str) -> str: """Format specific aims page for NIH-style grant.""" output = [f"# Specific Aims\n"] output.append(f"**Project Title:** {project_title}\n") for i, aim in enumerate(aims, 1): output.append(f"\n## Aim {i}: {aim.title}\n") output.append(f"**Rationale:** {aim.rationale}\n") output.append(f"**Approach:** {aim.approach}\n") output.append("**Expected Outcomes:**") for outcome in aim.expected_outcomes: output.append(f"- {outcome}") output.append("\n**Potential Pitfalls and Alternatives:**") for pitfall, alt in zip(aim.potential_pitfalls, aim.alternatives): output.append(f"- *Pitfall:* {pitfall}") output.append(f" *Alternative:* {alt}") return '\n'.join(output) # Example aims = [ SpecificAim( title="Characterize tumor-immune cell interactions via spatial transcriptomics", rationale="Spatial context of immune infiltration predicts immunotherapy response.", approach="Apply 10x Visium to matched pre/post-treatment biopsies (n=30).", expected_outcomes=["Spatial gene expression maps of tumor microenvironment", "Identification of immune cell niches predictive of response"], potential_pitfalls=["Low tissue quality from archived samples"], alternatives=["Use MERFISH for single-cell resolution if Visium sensitivity insufficient"] ) ] print(format_specific_aims(aims, "Spatial Transcriptomic Profiling of Immunotherapy Response"))
Configuration
| Parameter | Description | Default |
|---|---|---|
citation_style | Reference format (apa, vancouver, nature, ieee) | "apa" |
max_abstract_words | Word limit for abstract | 300 |
manuscript_format | Output format (markdown, latex, docx) | "markdown" |
line_spacing | Line spacing for output | "double" |
reference_manager | BibTeX file path | "references.bib" |
figure_prefix | How figures are referenced in text | "Fig." |
table_prefix | How tables are referenced in text | "Table" |
section_numbering | Number sections automatically | true |
Best Practices
-
Write the Methods section first — Methods are the most concrete section and anchor the rest of the paper. Write them while the work is fresh, including all parameters, software versions, and statistical tests. Other sections are easier to draft once methods are established.
-
Use active voice for clarity and brevity — "We measured cell viability" is clearer and shorter than "Cell viability was measured." Most modern journals prefer active voice. Reserve passive voice only when the actor is genuinely irrelevant or when journal style explicitly requires it.
-
Structure paragraphs with claim-evidence-interpretation — Each results paragraph should state the finding (claim), reference the supporting data or figure (evidence), and briefly explain what it means (interpretation). This pattern keeps writing focused and prevents results from reading like a data dump.
-
Track all citations programmatically — Use BibTeX or a reference manager from the start. Manual citation formatting leads to inconsistencies and errors. Automate bibliography generation so switching between journal styles (APA to Vancouver) requires changing one parameter, not reformatting every reference.
-
Write for the reviewer, not just the reader — Anticipate reviewer concerns: justify sample sizes, explain why you chose specific methods over alternatives, and address limitations proactively. Papers that preempt obvious criticisms receive more favorable reviews and fewer revision rounds.
Common Issues
Citation keys don't match between text and BibTeX file — Maintain a consistent naming convention for BibTeX keys (e.g., authorYYYY or author_keyword_YYYY). Use a linter or script to check that every \cite{key} in the text has a matching entry in the .bib file before submission.
Word count exceeds journal limits — Scientific writing tends to balloon during drafting. After completing a draft, make a reduction pass: remove hedge words ("it is interesting to note that"), combine redundant sentences, and move non-essential methods to supplementary materials. Aim to cut 15-20% on the first editing pass.
Formatting breaks when converting between Markdown and LaTeX/DOCX — Use Pandoc with a custom template for reliable conversion: pandoc manuscript.md -o manuscript.docx --reference-doc=template.docx. Define cross-references with consistent syntax and test the conversion pipeline early rather than reformatting at the end.
Reviews
No reviews yet. Be the first to review this template!
Similar Templates
Full-Stack Code Reviewer
Comprehensive code review skill that checks for security vulnerabilities, performance issues, accessibility, and best practices across frontend and backend code.
Test Suite Generator
Generates comprehensive test suites with unit tests, integration tests, and edge cases. Supports Jest, Vitest, Pytest, and Go testing.
Pro Architecture Workspace
Battle-tested skill for architectural, decision, making, framework. Includes structured workflows, validation checks, and reusable patterns for development.