Scientific Writing
Conventions for structuring research papers and for the drafting workflow.
This skill owns the paper's structure and process; it delegates:
- citation finding/verification and the search-protocol appendix to
backing-claims,
- LaTeX mechanics (semantic environments, restatable theorems, dual
article/slides builds, noweb appendices) to latex-writing,
- reading and uploading annotated drafts to remarkable.
Questions, hypotheses, contributions: full traceability
The skeleton of the paper is the mapping between contributions, research
questions and hypotheses. Enforce all of these:
- Two kinds of research questions, separately numbered.
Substantive questions ask about the world; methodological questions
ask whether the study's own instruments work (do independent
classifications agree? does coding from logs match coding from
think-aloud?). Methodological questions get their own environment and
counter, so they never renumber the substantive ones. See
references/question-structure.md for the LaTeX pattern.
- Every contribution is held to account by a research question.
The introduction has a Contributions subsection; each listed
contribution names the question that tests it. A methodological
contribution (an instrument, a coding scheme, a triangulation) gets a
methodological question. If a contribution has no question, either add
the question or drop the claim.
- Hypotheses are predicted answers. Each hypothesis answers exactly
one question; descriptive/exploratory questions have no hypothesis and
say so. If an overarching claim is not directly falsified but supported
by inference to the best explanation, state that explicitly in the
method overview.
- State once, restate twice. Each question and hypothesis is stated
once (introduction/theory) in a restatable environment, restated in
the method overview together with how it will be answered, and
restated in the conclusions together with its answer so far. Reference
by
\cref, never literal "RQ1"/"H2".
Method section
- Overview before details: open by restating every question and
hypothesis with its mode of answer (which data, which test, which
section), then give the details in subsections.
- Data collection in chronological order of the study, and motivate
each instrument at the point in time it is used: if an instrument is
administered at start and end, the start section motivates only the
start administration and a separate end-of-course section motivates the
re-administration.
- Do not duplicate a companion study's instrument. When a companion
paper collects data in the same setting (same course, same cohort),
use its measurements instead of writing a parallel instrument, and
let this study's own instruments test only what the companion's do
not cover. State the division of labour in the method (which scores
come from where), keep the instruments' platform titles
distinguishable for participants and analysis alike, and discuss
alternatives (e.g. established inventories) against the combined
design.
- Validated instruments stay verbatim. Do not reword items of a
validated questionnaire, even where wording fits the setting poorly;
note the tension in prose instead. Search for and cite published
criticisms of the instrument, and derive robustness checks from them
(e.g. scoring a subscale separately).
- Guard against circularity: a classification must never be derived
from the same data it is later correlated with; say explicitly which
sources each classification uses.
Literate-program appendices
Every questionnaire/quiz/survey the study administers, and every
quantitative analysis it runs, is a literate program in the paper's
appendix: one noweb source that weaves into the appendix chapter and
tangles into the runnable artifacts (e.g. the platform's quiz JSON, the
analysis script).
- The prose documents the data-file schemas; this doubles as the study's
code book.
- Instrument definitions and their analysis share constants (e.g. item
titles as result-file column keys) so they cannot drift apart —
ideally in the same source file, side by side.
- Uniform instruments are generated, not hand-written. When the
items share one form (a validated questionnaire: twenty items, the
same five responses), do not tangle the platform's JSON directly:
state the instrument once — titles, items, response anchors,
instructions — in a constants chunk, tangle a small generator that
unfolds it into the platform files, and have the analysis program
include the same constants chunk (titles find the reports, anchor
texts map answers back to scores). Reference: vt-debug's
rspq.nw
(make_rspq.py + analyze_rspq.py).
- Cross-reference both ways: the method section points to the appendix
program, the appendix points back to the sections that motivate each
piece.
- End-to-end automation, both directions. The programs reach into
the platform themselves: they create the instruments (e.g.
canvaslms quizzes create) and they fetch the results back (e.g.
the student-analysis report via the platform CLI's own importable
machinery) — course names and instrument titles are known constants,
so nothing is clicked or downloaded by hand. Where a fetch cannot be
automated yet, mark it XXX with a tracking issue rather than settling
for a manual step silently.
- LLM-assisted coding, human-verified. For open-text answers that
need qualitative coding, the analysis program pre-codes them with an
LLM (the
llm package; prompt states the coding scheme, answers in
JSON) and writes the suggestions into columns separate from the
human coder's verified codes — the sheet always shows which is which,
and the human's codes are the data.
- Build mechanics (article-only noweb.sty, Makefile rules, tangle
recipes, the syntax-highlighted weave): latex-writing's
references/dual-beamer-article.md section "Literate-program
appendices", and the literate-programming skill for the standard
tominted recipe.
- Validate tangled artifacts in the round that creates them (JSON parses,
Python compiles, quiz validators pass) — and test instrument creation
end to end against a sandbox course before the real one.
Review rounds
A draft iterates in review rounds; each round is one atomic unit and lives
on its own branch with its own PR. Name both after the draft version
the round produces — branch review-round-vN, PR to the default branch
titled "Review round: draft vN (YYYY-MM-DD)" — so branch, PR, commit
message and reMarkable name all carry one identifier (the round that
processes v48's comments and uploads v49 is review-round-v49; round
counts and draft versions diverge, so never number by round):
- Open the round: branch
review-round-vN off the default branch. The
round's work happens here; the PR opens when the round's draft is
uploaded.
- Read all annotated pages of the previous draft (remarkable skill:
content_type=annotations to list the pages, render_merged images to
read the handwriting).
- Interpret every comment; apply all edits of the round.
- New literature needs discovered in a round go through backing-claims
(find, verify, provenance block) and into the search-protocol appendix
in the same commit.
- Rebuild all outputs; verify: zero errors, no unresolved references,
restatement counts unchanged where expected.
- One commit per round, without asking; the commit message lists the
round's changes and names the draft version it produces (
"This commit is the version uploaded to reMarkable as draft YYYY-MM-DD, vN"), so
every uploaded draft maps to exactly one commit. Commit at upload
time — never upload a draft whose source is uncommitted. Push after
committing — the paper repo and, when skills changed, the skills repo
(mind that the first push of a fresh repo needs git push -u origin <branch>; a GitHub repo that only ever received issues counts as
fresh).
- Upload the new draft as
"<Title> (draft YYYY-MM-DD, vN)" with N
incremented.
- Open the PR (
gh pr create), listing the round's changes; use
closes #N for issues the round resolved, so merging closes them.
Merging the PR ends the round; the next round starts at step 0 with a
new branch and PR.
Cite the principle wherever the argument is made
When a passage argues from a theoretical principle the paper rests on — the
design rationale of an instrument item ("a test of discernment must not
point out the aspect"), the wording of a stem, a coding or analysis choice —
cite the principle's source in that passage (e.g. \autocite[p.~91]{NCOL}),
not only where the principle was first introduced. The citation is the
support for the argument: a reader of an appendix paragraph does not carry
the introduction's citation with them, and a reviewer sees an unsupported
claim. This holds for every instance — each item rationale that invokes the
principle, each stem redesign in a review round. "Already cited earlier in
the paper" is not a reason to omit it; repeating the same key and page is
correct, not redundant. (Verification per backing-claims happens at the
first use; later uses of the same verified claim reuse the key and page.)
Open questions and pending decisions
- Mark open decisions with
% XXX and deferred work with % TODO in the
source, stating the alternatives and what resolves them; resolve or
carry them forward consciously each round — never silently drop one.
- Mirror them as GitHub issues whenever the paper repository has a
GitHub remote (
git remote -v). This is standing authorisation: create
the issues with gh issue create without asking. Conventions:
- One issue per XXX/TODO item; the title states the decision or task,
the body gives the file and section, the context, the alternatives,
and what resolves it.
- Annotate the source comment with the issue number —
% TODO(#12): ...
— so source and tracker stay linked.
- Per round: new XXX/TODO items get new issues; items resolved in the
round get their issues closed (
gh issue close N --comment ...) in
the same round, referencing the commit.
- An item tracked elsewhere too (e.g. a
nytid todo for work the
author must do personally) still gets the issue; note the cross-link
in both.
- Anonymise course/institution details before submission (keep a
% TODO
at the top of the method section until done).
Checklist (per round)
1---2name: scientific-writing3description: Structure and workflow conventions for research papers. Use proactively when (1) writing or revising a paper draft, its introduction, method, results or conclusions, (2) adding research questions, hypotheses, contributions, questionnaires or analyses to a paper, (3) processing a review round on a draft, or (4) starting a new paper repository. Covers question-hypothesis-contribution traceability, substantive vs methodological research questions, literate-program appendices for instruments and analyses, method-section chronology, and the review-round loop.4---56# Scientific Writing78Conventions for structuring research papers and for the drafting workflow.9This skill owns the paper's *structure and process*; it delegates:1011- citation finding/verification and the search-protocol appendix to12 **backing-claims**,13- LaTeX mechanics (semantic environments, restatable theorems, dual14 article/slides builds, noweb appendices) to **latex-writing**,15- reading and uploading annotated drafts to **remarkable**.1617## Questions, hypotheses, contributions: full traceability1819The skeleton of the paper is the mapping between contributions, research20questions and hypotheses. Enforce all of these:21221. **Two kinds of research questions, separately numbered.**23 *Substantive* questions ask about the world; *methodological* questions24 ask whether the study's own instruments work (do independent25 classifications agree? does coding from logs match coding from26 think-aloud?). Methodological questions get their own environment and27 counter, so they never renumber the substantive ones. See28 `references/question-structure.md` for the LaTeX pattern.292. **Every contribution is held to account by a research question.**30 The introduction has a Contributions subsection; each listed31 contribution names the question that tests it. A methodological32 contribution (an instrument, a coding scheme, a triangulation) gets a33 methodological question. If a contribution has no question, either add34 the question or drop the claim.353. **Hypotheses are predicted answers.** Each hypothesis answers exactly36 one question; descriptive/exploratory questions have no hypothesis and37 say so. If an overarching claim is not directly falsified but supported38 by inference to the best explanation, state that explicitly in the39 method overview.404. **State once, restate twice.** Each question and hypothesis is stated41 once (introduction/theory) in a restatable environment, restated in42 the method overview together with *how* it will be answered, and43 restated in the conclusions together with its answer so far. Reference44 by `\cref`, never literal "RQ1"/"H2".4546## Method section4748- **Overview before details**: open by restating every question and49 hypothesis with its mode of answer (which data, which test, which50 section), then give the details in subsections.51- **Data collection in chronological order** of the study, and motivate52 each instrument *at the point in time it is used*: if an instrument is53 administered at start and end, the start section motivates only the54 start administration and a separate end-of-course section motivates the55 re-administration.56- **Do not duplicate a companion study's instrument.** When a companion57 paper collects data in the same setting (same course, same cohort),58 use its measurements instead of writing a parallel instrument, and59 let this study's own instruments test only what the companion's do60 not cover. State the division of labour in the method (which scores61 come from where), keep the instruments' platform titles62 distinguishable for participants and analysis alike, and discuss63 alternatives (e.g. established inventories) against the *combined*64 design.65- **Validated instruments stay verbatim.** Do not reword items of a66 validated questionnaire, even where wording fits the setting poorly;67 note the tension in prose instead. Search for and cite published68 criticisms of the instrument, and derive robustness checks from them69 (e.g. scoring a subscale separately).70- **Guard against circularity**: a classification must never be derived71 from the same data it is later correlated with; say explicitly which72 sources each classification uses.7374## Literate-program appendices7576Every questionnaire/quiz/survey the study administers, and every77quantitative analysis it runs, is a **literate program in the paper's78appendix**: one noweb source that weaves into the appendix chapter and79tangles into the runnable artifacts (e.g. the platform's quiz JSON, the80analysis script).8182- The prose documents the data-file schemas; this doubles as the study's83 code book.84- Instrument definitions and their analysis share constants (e.g. item85 titles as result-file column keys) so they cannot drift apart —86 ideally in the same source file, side by side.87- **Uniform instruments are generated, not hand-written.** When the88 items share one form (a validated questionnaire: twenty items, the89 same five responses), do not tangle the platform's JSON directly:90 state the instrument once — titles, items, response anchors,91 instructions — in a constants chunk, tangle a small generator that92 unfolds it into the platform files, and have the analysis program93 include the *same* constants chunk (titles find the reports, anchor94 texts map answers back to scores). Reference: vt-debug's `rspq.nw`95 (`make_rspq.py` + `analyze_rspq.py`).96- Cross-reference both ways: the method section points to the appendix97 program, the appendix points back to the sections that motivate each98 piece.99- **End-to-end automation, both directions.** The programs reach into100 the platform themselves: they *create* the instruments (e.g.101 `canvaslms quizzes create`) and they *fetch* the results back (e.g.102 the student-analysis report via the platform CLI's own importable103 machinery) — course names and instrument titles are known constants,104 so nothing is clicked or downloaded by hand. Where a fetch cannot be105 automated yet, mark it XXX with a tracking issue rather than settling106 for a manual step silently.107- **LLM-assisted coding, human-verified.** For open-text answers that108 need qualitative coding, the analysis program pre-codes them with an109 LLM (the `llm` package; prompt states the coding scheme, answers in110 JSON) and writes the suggestions into columns *separate from* the111 human coder's verified codes — the sheet always shows which is which,112 and the human's codes are the data.113- Build mechanics (article-only noweb.sty, Makefile rules, tangle114 recipes, the syntax-highlighted weave): latex-writing's115 `references/dual-beamer-article.md` section "Literate-program116 appendices", and the literate-programming skill for the standard117 tominted recipe.118- Validate tangled artifacts in the round that creates them (JSON parses,119 Python compiles, quiz validators pass) — and test instrument creation120 end to end against a sandbox course before the real one.121122## Review rounds123124A draft iterates in review rounds; each round is one atomic unit and lives125on **its own branch with its own PR**. Name both after the draft version126the round *produces* — branch `review-round-vN`, PR to the default branch127titled `"Review round: draft vN (YYYY-MM-DD)"` — so branch, PR, commit128message and reMarkable name all carry one identifier (the round that129processes v48's comments and uploads v49 is `review-round-v49`; round130counts and draft versions diverge, so never number by round):1311320. Open the round: branch `review-round-vN` off the default branch. The133 round's work happens here; the PR opens when the round's draft is134 uploaded.1351. Read all annotated pages of the previous draft (remarkable skill:136 `content_type=annotations` to list the pages, `render_merged` images to137 read the handwriting).1382. Interpret every comment; apply all edits of the round.1393. New literature needs discovered in a round go through backing-claims140 (find, verify, provenance block) and into the search-protocol appendix141 **in the same commit**.1424. Rebuild all outputs; verify: zero errors, no unresolved references,143 restatement counts unchanged where expected.1445. **One commit per round**, without asking; the commit message lists the145 round's changes and names the draft version it produces (`"This commit146 is the version uploaded to reMarkable as draft YYYY-MM-DD, vN"`), so147 every uploaded draft maps to exactly one commit. **Commit at upload148 time** — never upload a draft whose source is uncommitted. **Push after149 committing** — the paper repo and, when skills changed, the skills repo150 (mind that the first push of a fresh repo needs `git push -u origin151 <branch>`; a GitHub repo that only ever received issues counts as152 fresh).1536. Upload the new draft as `"<Title> (draft YYYY-MM-DD, vN)"` with N154 incremented.1557. Open the PR (`gh pr create`), listing the round's changes; use156 `closes #N` for issues the round resolved, so merging closes them.157 Merging the PR ends the round; the next round starts at step 0 with a158 new branch and PR.159160## Cite the principle wherever the argument is made161162When a passage argues from a theoretical principle the paper rests on — the163design rationale of an instrument item ("a test of discernment must not164point out the aspect"), the wording of a stem, a coding or analysis choice —165cite the principle's source *in that passage* (e.g. `\autocite[p.~91]{NCOL}`),166not only where the principle was first introduced. The citation is the167support for the argument: a reader of an appendix paragraph does not carry168the introduction's citation with them, and a reviewer sees an unsupported169claim. This holds for every instance — each item rationale that invokes the170principle, each stem redesign in a review round. "Already cited earlier in171the paper" is not a reason to omit it; repeating the same key and page is172correct, not redundant. (Verification per backing-claims happens at the173first use; later uses of the same verified claim reuse the key and page.)174175## Open questions and pending decisions176177- Mark open decisions with `% XXX` and deferred work with `% TODO` in the178 source, stating the alternatives and what resolves them; resolve or179 carry them forward consciously each round — never silently drop one.180- **Mirror them as GitHub issues** whenever the paper repository has a181 GitHub remote (`git remote -v`). This is standing authorisation: create182 the issues with `gh issue create` without asking. Conventions:183 - One issue per XXX/TODO item; the title states the decision or task,184 the body gives the file and section, the context, the alternatives,185 and what resolves it.186 - Annotate the source comment with the issue number — `% TODO(#12): ...`187 — so source and tracker stay linked.188 - Per round: new XXX/TODO items get new issues; items resolved in the189 round get their issues closed (`gh issue close N --comment ...`) in190 the same round, referencing the commit.191 - An item tracked elsewhere too (e.g. a `nytid todo` for work the192 author must do personally) still gets the issue; note the cross-link193 in both.194- Anonymise course/institution details before submission (keep a `% TODO`195 at the top of the method section until done).196197## Checklist (per round)198199- [ ] Every contribution names its research question200- [ ] Methodological questions separate from substantive ones201- [ ] Each question restated in method overview (with mode of answer) and202 in conclusions (with answer)203- [ ] Instruments motivated at their chronological place204- [ ] Questionnaires and analyses exist as literate appendix programs;205 tangled artifacts validated206- [ ] New citations verified and searches documented (backing-claims)207- [ ] Every argument from a theoretical principle cites its source where208 the argument is made, not only at first mention209- [ ] XXX/TODO items mirrored as GitHub issues (new ones opened, resolved210 ones closed) when the repo is on GitHub211- [ ] Both outputs build clean; committed as one round; new draft uploaded