A biweekly scientific writing & peer-review workshop. Every two weeks the crew meets, picks one manuscript section, and works through it together using the Roberts Lab Writing Guide. Each manuscript is a little boat sailing from the Port of Idea to Publication Harbor — and this repo's GitHub Page tracks the voyage. ⚓
(Once Pages is enabled — see setup below.)
We tackle one section per meeting, in the order the writing guide recommends:
| # | Port | What we do |
|---|---|---|
| 1 | 🎯 Title | Convey the central contribution in one line. |
| 2 | 📝 Abstract | A self-contained mini-paper (150–300 words). |
| 3 | 🧭 Introduction | Establish why the work matters. |
| 4 | 🔬 Methods | Enable replication and judge credibility. |
| 5 | 📊 Results | Present the data and the logical evidence. |
| 6 | 💭 Discussion | Interpret findings and implications. |
| 7 | 📚 Refs & Acks | Acknowledge prior work and helpers. |
| 8 | ✨ Final Edit | The three-pass review: details → structure → big picture. |
A manuscript's progress bar = sections complete ÷ 8. Reach 8/8 and the boat pulls into the harbor 🏝️ (confetti included 🎉).
- Open the Writing Guide to that meeting's section.
- The author shares their draft; the crew gives peer-review feedback on that section only.
- After the meeting, log what got done (see below) — the boat advances.
We meet every two weeks. The site shows a live countdown to the next meeting.
Two ways:
- Easy (automatic): open a New manuscript issue and fill out the form. A bot (
issue-update.yml) parses it, adds the entry todata/manuscripts.json, commits, and closes the issue — the live page refreshes a minute or two later. ✨ - Direct: edit
data/manuscripts.jsonand open a PR (see CONTRIBUTING.md).
After each meeting, mark the section done with a
Progress issue — the same bot checks
off those sections (and updates status) automatically. Or edit the manuscript's
sectionsComplete list in data/manuscripts.json directly.
How the automation works: when an issue labeled
new-manuscriptorprogressis opened/edited, the workflow runsscripts/issue_to_data.py, validates the result, and commits it. If it can't parse the form it comments asking a maintainer to apply it by hand — it never pushes broken data. Requires Settings → Actions → General → Workflow permissions → Read and write.
- Settings → Pages → Build and deployment → Source: GitHub Actions.
The included
pages.ymlworkflow publishes the site on every push tomain. - That's it. The site is plain HTML/CSS/JS reading
data/manuscripts.json— no build step.
The links above assume the repo lives at
RobertsLab/pubathon-2026. If it lives somewhere else, the relative../../issues/...links still work; only update the hard-coded URL inindex.html's top buttons and the live-tracker link above.
python3 -m http.server 4173
# open http://localhost:4173Validate the data file before committing:
python3 scripts/validate.pyindex.html # the tracker page
assets/style.css # nautical theme
assets/app.js # renders cards + progress from the data file
data/manuscripts.json # ← the single source of truth (edit this!)
scripts/validate.py # sanity-checks the data file (runs in CI)
.github/ # issue forms + Pages/validate workflows
meetings/ # running log of what we covered each meeting
Fair winds and following seas. 🌊