一键导入
paper-section-writer
Write mathematical modeling paper sections based only on available problem analysis, model plans, results, figures, and robustness reports.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Write mathematical modeling paper sections based only on available problem analysis, model plans, results, figures, and robustness reports.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
At a judgment point, emit the 2-3 questions only the human modeler can answer — framed as trade-offs, not answers — and refuse to answer them. The inverse of "AI answers, human confirms": here the AI asks, the human answers, then the AI assists with the consequences.
Manage the full mathematical modeling contest workflow and decide which skill should be used next.
Verify every skill that claims "completed" produced a substantive audit/review artifact on disk with ≥ 5 explicit pass items. Runs as part of the independent audit layer that does not trust any single skill's self-declaration of done.
Plan figures and tables that support the modeling logic, results, and paper narrative.
Generate publication-quality mathematical modeling figures with matplotlib, covering evaluation charts, prediction plots, optimization diagrams, mechanism schematics, heatmaps, and multi-panel layouts. Use when creating or revising figures for contest papers.
Extract, organize, and document unified model assumptions from the problem parse and candidate method pools, distinguishing necessary from simplifying assumptions.
| name | paper-section-writer |
| description | Write mathematical modeling paper sections based only on available problem analysis, model plans, results, figures, and robustness reports. |
| license | MIT |
Write mathematical modeling paper sections from validated workflow artifacts.
This skill turns the final method explanation, final result analysis, solution package, and figure-table plan into structured paper section drafts. It must keep every claim traceable to an artifact and must not invent data, numerical results, figures, references, or unsupported conclusions.
CRITICAL: This skill is gated. It MUST NOT write final paper sections for a subquestion unless all three prerequisites are met (see "Three Critical Rules" below). If prerequisites are missing, this skill must refuse and redirect to the appropriate upstream skill.
This skill does not run models, generate new results, create unsupported figures, perform final QA, or approve final submission.
Use this skill:
solution-package-builder has produced the solution package for a subquestion.figure-table-planner has produced the figure-table plan.quality-assurance-auditor.Do NOT use this skill:
methods/Qx/qx_final_method_explanation.md is missing.results/Qx/reports/qx_final_result_analysis.md is missing.results/QX/reports/qx_solution_package_for_writer.md is missing (the writer's primary source).Beyond the three critical rules (which ensure the right inputs exist), every section drafted by this skill must also pass two output-quality gates before it counts as "drafted". Marketers of completion always claim "已经写完了"; this gate makes "写完" structurally checkable.
Different sections have different minimum substantive lengths. Below these floors, the section is "占位" not "正文":
| Section type | Floor (Chinese chars) | Floor (English words) | Rationale |
|---|---|---|---|
| Abstract | 200 | 150 | Must cover problem + method + key result + robustness in 4-6 sentences |
| Problem restatement | 300 | 220 | Background + main goal + subquestions + constraints |
| Problem analysis | 400 | 280 | Decomposition reasoning + dependency map |
| Assumptions | 200 | 150 | Each necessary assumption stated with justification |
| Symbols and definitions | 150 | 100 | Variable list with units; brief |
| Data preprocessing | 300 | 220 | Sources + cleaning ops + risks |
| Model construction (per Qx) | 600 | 450 | Assumptions + symbols + math model + procedure + metrics — this is the longest per-Qx section |
| Model solution (per Qx) | 250 | 180 | Solver + pipeline + computational notes |
| Results analysis (per Qx) | 500 | 380 | Numerical results + interpretation + baseline comparison + figures referenced |
| Method selection narrative (per Qx) | 300 | 220 | Eliminated methods + why-this-method |
| Robustness and sensitivity | 350 | 250 | Stable conclusions + fragile conclusions + perturbation details |
| Strengths and limitations | 300 | 220 | At least 2 strengths + 2 limitations, each tied to evidence |
| Conclusion | 300 | 220 | Direct answer per subquestion + key numbers + limitations |
If a section is below floor, the writer must report it as status: under_floor and identify what is missing (which subsection lacks substance), NOT pad with filler prose. Filler prose triggers paper-polisher rejection later.
Every numerical result reported in the paper MUST be accompanied by at least three discussion dimensions out of:
robustness/Qx/qx_robustness_report.md) — AI may draft from the robustness report.[MODELER INPUT NEEDED: what does this number mean physically — is it large/small/plausible, what does it imply in the real world?] in the physical-meaning slot and STOPS. A human replaces it.qx_final_result_analysis.md) — AI may draft from the analysis comparison tables.A bare claim like "RMSE = 2.4" with no discussion fails this gate. The minimum is 3 of the above 5 dimensions; pick whichever are most defensible from evidence.
B-layer rule — physical meaning is the human's dimension. Dimension 2 (physical / domain meaning) counts toward the ≥3 floor ONLY if its slot traces to a human-authored field, i.e. the [MODELER INPUT NEEDED: ...] sentinel has been replaced by human prose. A surviving [MODELER INPUT NEEDED (or any [AI-DRAFT) sentinel in the physical-meaning slot is NOT a covered dimension — it does not count, exactly as a <<<HUMAN>>> sentinel fails the C-layer decision gate. If removing the un-replaced physical-meaning slot drops a numerical claim below 3 covered dimensions, that claim FAILS G5.2 and the section is not "drafted". The AI draws the other dimensions (sensitivity from the robustness report, baseline from the analysis, cross-Qx, uncertainty) but never fabricates or finalizes the physical-meaning one to reach the floor.
In the output JSON summary, include a three_dimension_check field listing, per numerical claim, which 3+ dimensions were covered AND, for the physical-meaning slot, whether it is human_authored: true/false (a false value means that dimension does NOT count and the claim may be under the floor).
Three high-stakes framing claims are graded judgments — what a judge reads first and weighs most. The AI may draft surrounding prose and mechanics, but MUST NOT originate these three. Each is emitted as a [MODELER INPUT NEEDED: ...] sentinel (no AI draft to copy) and a human must supply it before the abstract / Qx section counts as "drafted". A surviving sentinel here is a GATE FAIL, exactly like the physical-meaning slot above.
key_result_claim (abstract headline) — which results are the headline of the paper. The AI knows every frozen number but must not decide which one(s) the abstract leads with. In the abstract draft, the headline slot is:
[MODELER INPUT NEEDED: which result(s) are the headline of this paper — the number(s) the abstract leads with and why they matter?]
The AI may surround it with the frozen numbers it has (so the human picks from real values), but must not pick the headline itself.
contribution_claim (what the innovation is) — what this paper's contribution / innovation actually is. This is graded contribution, not a mechanical summary. In the abstract and/or strengths section, the contribution slot is:
[MODELER INPUT NEEDED: what is this paper's contribution / innovation — what did we do that is new or better, in your own words?]
The AI must NOT generalize "we built a model and it worked" into a contribution claim.
why_this_method (per Qx) — TRANSCRIBED, not re-authored — the justification for the chosen method must NOT be re-authored by the AI from the method explanation. It is transcribed verbatim from the human's decision log at methods/Qx/qx_decision_log.md, with a provenance marker <!-- from Qx-D0n --> pointing to the specific decision entry. The method-selection narrative slot is:
[MODELER INPUT NEEDED: transcribe the "why this method over the rejected ones" rationale from methods/Qx/qx_decision_log.md and tag it <!-- from Qx-D0n --> with the source decision id. Do NOT re-author this from the method explanation.]
If methods/Qx/qx_decision_log.md is missing or has no entry for the method choice, the why-this-method slot stays a sentinel (gate FAIL) — route to modeler-decision-logger. The AI may quote/restate the mechanics of the method (assumptions, symbols, procedure) from the final method explanation, but the judgment ("why this over the alternatives") must carry the <!-- from Qx-D0n --> provenance marker and trace to a human decision entry. A why-this-method paragraph with no provenance marker fails this gate.
In the output JSON summary, add a paper_seeds field reporting, per seed, present: true/false and (for why_this_method) the provenance_marker transcribed. Any seed present: false (surviving sentinel) means the affected section is NOT "drafted".
This skill MUST enforce these three rules. Violation of any rule means the skill must refuse to write final paper sections and redirect.
GATE CHECK: methods/Qx/qx_final_method_explanation.md MUST exist.
If missing: Stop. Do NOT write the paper section for Qx. The paper writer cannot write the model construction section without knowing the final method, its assumptions, symbols, and mathematical specification. Redirect to workflow-orchestrator with a clear blocker report.
The paper writer MAY write a partial draft for other sections that don't depend on the final method (e.g., problem restatement), but MAY NOT write the model construction or results analysis sections.
GATE CHECK: results/Qx/reports/qx_final_result_analysis.md MUST exist.
If missing: Stop. Do NOT write the results analysis section for Qx. Raw experiment outputs are not sufficient — the results must have been analyzed and interpreted by the programmer. Redirect to workflow-orchestrator with a clear blocker report.
GATE CHECK: results/Qx/reports/qx_solution_package_for_writer.md MUST exist.
If missing: Stop. Do NOT write the paper section for Qx by hunting through scattered results and method notes. The solution package is the writer's curated source. If it's missing, the subquestion is NOT Ready for Writer. Redirect to workflow-orchestrator or solution-package-builder.
The following must exist before writing final paper sections for a subquestion:
REQUIRED (hard gates — verified at start):
methods/Qx/qx_final_method_explanation.mdresults/Qx/reports/qx_final_result_analysis.mdresults/Qx/reports/qx_solution_package_for_writer.mdAlso required for complete sections:
methods/Qx/qx_figure_table_plan.md (figure and table plan).robustness/Qx/qx_robustness_report.md (for robustness section).For global sections (abstract, problem restatement, assumptions, symbols, conclusion):
If any hard gate is missing, this skill must refuse and report which gate failed.
Use or request (for Qx paper section):
Primary sources (read first):
results/Qx/reports/qx_solution_package_for_writer.md — THE primary source for the writer.methods/Qx/qx_final_method_explanation.md — method details.results/Qx/reports/qx_final_result_analysis.md — result details.Supporting sources:
methods/Qx/qx_figure_table_plan.md — figure/table assignments.methods/Qx/qx_method_candidates.md — for method selection narrative.methods/Qx/qx_method_iteration_log.md — for iteration history context.robustness/Qx/qx_robustness_report.md — for robustness section.paper/sections/, if any.planning/).GATE CHECK: Verify prerequisites.
Read the solution package first.
Gather the detailed sources.
Build a section map.
Draft standard paper sections.
Maintain artifact traceability.
Write formulas and symbols carefully.
Handle missing evidence explicitly.
Produce section drafts.
paper/sections/.q1.tex or q1.md, abstract.tex, assumptions.tex, etc.Recommend final audit.
quality-assurance-auditor.Produce paper section drafts and a writing summary:
paper/sections/abstract.tex or .mdpaper/sections/problem_restatement.texpaper/sections/problem_analysis.texpaper/sections/assumptions.texpaper/sections/symbols.texpaper/sections/data_preprocessing.texpaper/sections/q1.texpaper/sections/q2.texpaper/sections/q3.texpaper/sections/q4.texpaper/sections/robustness.texpaper/sections/strengths_limitations.texpaper/sections/conclusion.texPrefer this JSON-compatible summary:
{
"paper_writing_summary": {
"status": "awaiting_modeler",
"target_subquestion": "Q1",
"gate_check": {
"rule1_method_explanation_exists": true,
"rule2_result_analysis_exists": true,
"rule3_solution_package_exists": true,
"all_gates_passed": true
},
"primary_source_used": "results/Q1/reports/q1_solution_package_for_writer.md",
"drafted_sections": [
"paper/sections/q1.tex"
],
"incomplete_sections": [],
"unsupported_claims": [],
"three_dimension_check": [
{
"claim": "RMSE = 2.4",
"dimensions_covered": ["sensitivity", "baseline", "physical_meaning"],
"physical_meaning_human_authored": false,
"note": "physical-meaning slot still a [MODELER INPUT NEEDED] sentinel — does NOT count; claim currently at 2 covered dimensions, under floor."
}
],
"paper_seeds": {
"key_result_claim": { "present": false, "note": "[MODELER INPUT NEEDED] sentinel in abstract — human must pick the headline." },
"contribution_claim": { "present": false, "note": "[MODELER INPUT NEEDED] sentinel in abstract — human must state the innovation." },
"why_this_method": { "present": false, "provenance_marker": null, "note": "awaiting transcription from methods/Q1/qx_decision_log.md tagged <!-- from Q1-D0n -->." }
},
"surviving_sentinels": [
"paper/sections/abstract.tex: key_result_claim, contribution_claim",
"paper/sections/q1.tex: physical-meaning slot for RMSE; why_this_method"
],
"artifact_mapping": [
{
"section": "q1.tex",
"uses_artifacts": [
"methods/Q1/q1_final_method_explanation.md",
"methods/Q1/qx_decision_log.md",
"results/Q1/reports/q1_final_result_analysis.md",
"results/Q1/reports/q1_solution_package_for_writer.md",
"results/Q1/experiments/final/figures/q1_ranking.png",
"robustness/Q1/q1_robustness_report.md"
]
}
],
"recommended_next_skill": "modeler (replace [MODELER INPUT NEEDED] sentinels), then quality-assurance-auditor"
}
}
If a JSON block is too rigid, use a concise Markdown report with the same fields.
Summarize the problem, methods, key results, robustness evidence, and final conclusions. Mention only numerical results that exist. Do not invent values or claim superiority without evidence. The AI MUST NOT author two seeds (G5.3): the key_result_claim (which result is the headline) and the contribution_claim (what the innovation is) — emit each as a [MODELER INPUT NEEDED: ...] sentinel for the human to supply. The AI may draft the problem/method/robustness sentences around them.
Restate the problem in the team's own words. Include background, main goal, subquestions, required outputs, and constraints.
Explain how the problem is decomposed and why the workflow order is reasonable. Map each subquestion to its task type. Explain dependencies.
State simplifying assumptions needed for modeling. Each assumption should be necessary, interpretable, and linked to a modeling need. Distinguish necessary from simplifying assumptions.
Define variables, parameters, sets, indices, functions, and outputs. Distinguish decision variables, state variables, parameters, inputs, and outputs. Include units where available. Keep notation consistent across sections.
Explain data sources, field meanings, cleaning operations, and readiness. Mention missing values, outliers, units, transformations, and remaining risks.
Present the final model: assumptions, symbols, objective function/ evaluation criterion, constraints, solution procedure. Align with the final method explanation. Include baseline before claiming improvement. Mention eliminated methods to demonstrate thoroughness.
Explain how the model was solved or computed. Link to generated and reviewed scripts. Mention solver, algorithm, or computation pipeline.
Interpret model outputs. Use result tables and figures. Keep conclusions proportional to evidence. Separate result description from causal interpretation. Reference the final result analysis. For every numerical result, the physical/domain-meaning discussion dimension (G5.2 dim 2) is the human's — emit [MODELER INPUT NEEDED: what does this number mean physically — is it large/small/plausible, what does it imply in the real world?] and let the AI draft the other dimensions (sensitivity, baseline, cross-Qx, uncertainty).
Describe the candidate method pool, what was tried, what was eliminated, why the final method was chosen. Supported by comparison figures (Type 2) and experiment reports. The "why this method" judgment is the why_this_method seed (G5.3) and MUST be transcribed from methods/Qx/qx_decision_log.md with a <!-- from Qx-D0n --> provenance marker — the AI must NOT re-author it. Emit [MODELER INPUT NEEDED: transcribe the why-this-method rationale from methods/Qx/qx_decision_log.md, tagged <!-- from Qx-D0n -->] if the decision entry is not yet available. The AI may describe the candidate pool and elimination mechanics freely.
Show whether conclusions are stable. Use robustness-checker outputs. Separate stable and fragile conclusions. State conclusion boundaries.
Explain what the model does well and where it may fail. Be specific. Link limitations to assumptions, data, method, or robustness findings.
Answer the original subquestions and provide final recommendations. Every conclusion should map to a subquestion. Avoid conclusions not supported by results or QA.
Describe code, extra tables, parameter settings, or supplementary derivations. Link to scripts and outputs.
frozen_numbers.json, not from raw qx_final_result_analysis.md and not from the section drafts themselves. If frozen_numbers.json is missing, the section is NOT writable — route to solution-package-builder.under_floor, not "drafted". Do not pad with generic prose to hit the floor; identify the missing subsection instead.key_result_claim and contribution_claim (G5.3), (c) the why_this_method per Qx, which is transcribed from methods/Qx/qx_decision_log.md with a <!-- from Qx-D0n --> provenance marker, never re-authored. Each is emitted as a [MODELER INPUT NEEDED: ...] sentinel. A surviving [MODELER INPUT NEEDED or [AI-DRAFT sentinel in a finalized section is a GATE FAIL — the same way a <<<HUMAN>>> sentinel fails the C-layer decision artifact. Do not delete a sentinel by writing the judgment yourself; that defeats the gate.[MODELER INPUT NEEDED: ...] (G5.2 dim 2). In the abstract, leave key_result_claim and contribution_claim as [MODELER INPUT NEEDED: ...] (G5.3). For each Qx, the why-this-method judgment is transcribed from methods/Qx/qx_decision_log.md with a <!-- from Qx-D0n --> marker, never re-authored. A section with a surviving [MODELER INPUT NEEDED / [AI-DRAFT sentinel is NOT "drafted" — it is awaiting_modeler, and the gate fails (completeness-auditor treats these sentinels as not-done).Before handing off, verify:
under_floor with identified gap).[MODELER INPUT NEEDED: ...] sentinel has been replaced by human prose. Removing un-replaced physical-meaning slots, no numerical claim is left under 3 covered dimensions.[MODELER INPUT NEEDED and no [AI-DRAFT sentinel survives in any section claimed "drafted". The three seeds (G5.3) — key_result_claim, contribution_claim, why_this_method per Qx — are present and human-supplied. Each why_this_method paragraph carries a <!-- from Qx-D0n --> provenance marker tracing to methods/Qx/qx_decision_log.md. A surviving sentinel = gate FAIL; mark the section awaiting_modeler, not "drafted".frozen_numbers.json (not raw results, not previous drafts).math-figure-generator's render_check_and_log (verify by checking paper/figures/render_check.log).paper-polisher, then consistency-auditor / completeness-auditor / quality-assurance-auditor (audit layer).Stop and report a blocker if:
methods/Qx/qx_final_method_explanation.md is missing. → Redirect to workflow-orchestrator or final-method-explainer.results/Qx/reports/qx_final_result_analysis.md is missing. → Redirect to workflow-orchestrator or result-report-generator.results/Qx/reports/qx_solution_package_for_writer.md is missing. → Redirect to workflow-orchestrator or solution-package-builder.This skill must stop instead of guessing when:
When stopping, output:
After producing paper section drafts with all gates passed, hand off to:
quality-assurance-auditor
The handoff should include:
If missing model results block writing, hand back to the appropriate code generator or code-reviewer.
If missing robustness evidence blocks writing, hand back to robustness-checker.
If missing visual planning blocks writing, hand back to figure-table-planner.
If gates failed, hand back to workflow-orchestrator with the specific gate failure report.
Input state:
methods/Q1/q1_final_method_explanation.md exists.results/Q1/reports/q1_final_result_analysis.md exists.results/Q1/reports/q1_solution_package_for_writer.md exists.The AI drafts the mechanics (model construction, solution, baseline/sensitivity discussion) but leaves the graded judgments as sentinels: the physical-meaning slot per number, and the abstract's key_result_claim / contribution_claim, and the why_this_method paragraph (which must be transcribed from the decision log). Status is awaiting_modeler, not "drafted", until those sentinels are replaced by the human.
Output:
{
"paper_writing_summary": {
"status": "awaiting_modeler",
"target_subquestion": "Q1",
"gate_check": {
"rule1_method_explanation_exists": true,
"rule2_result_analysis_exists": true,
"rule3_solution_package_exists": true,
"all_gates_passed": true
},
"drafted_sections": [
"paper/sections/q1.tex (mechanics drafted; physical-meaning + why_this_method sentinels pending)"
],
"paper_seeds": {
"key_result_claim": { "present": false },
"contribution_claim": { "present": false },
"why_this_method": { "present": false, "provenance_marker": null }
},
"surviving_sentinels": [
"paper/sections/abstract.tex: key_result_claim, contribution_claim",
"paper/sections/q1.tex: physical-meaning slot per number; why_this_method"
],
"primary_source_used": "results/Q1/reports/q1_solution_package_for_writer.md",
"recommended_next_skill": "modeler (replace sentinels; transcribe why_this_method from methods/Q1/qx_decision_log.md), then quality-assurance-auditor"
}
}
Input state:
methods/Q2/q2_final_method_explanation.md does NOT exist (modeler hasn't confirmed final method).results/Q2/reports/q2_final_result_analysis.md exists.results/Q2/reports/q2_solution_package_for_writer.md does NOT exist (blocked by Rule 1).Output:
{
"blocked_items": [
"GATE FAILURE (Rule 1): Cannot write Q2 paper section. The final method explanation is missing at methods/Q2/q2_final_method_explanation.md."
],
"gate_check": {
"rule1_method_explanation_exists": false,
"rule2_result_analysis_exists": true,
"rule3_solution_package_exists": false,
"all_gates_passed": false
},
"what_can_be_written": [
"Problem restatement section (does not depend on final method).",
"Data preprocessing section (if data report exists)."
],
"recommended_next_skill": "workflow-orchestrator",
"recommended_next_action": "The modeler must confirm the final method for Q2 and run final-method-explainer. Then solution-package-builder must produce the solution package. Only then can the paper writer proceed."
}
Input state:
Output:
{
"blocked_items": [
"GATE FAILURE (Rule 2): Cannot write Q3 paper section. The final result analysis is missing at results/Q3/reports/q3_final_result_analysis.md. Raw experiment outputs are not sufficient — the programmer must analyze and interpret the results first."
],
"gate_check": {
"rule1_method_explanation_exists": true,
"rule2_result_analysis_exists": false,
"rule3_solution_package_exists": false,
"all_gates_passed": false
},
"recommended_next_skill": "result-report-generator",
"recommended_next_action": "Run result-report-generator in final mode to produce the final result analysis for Q3. Then run solution-package-builder."
}
Input state:
Output:
{
"blocked_items": [
"GATE FAILURE (Rule 3): Cannot write Q4 paper section. The solution package is missing at results/Q4/reports/q4_solution_package_for_writer.md. The paper writer should use the solution package as primary source, not scatter through method and result files."
],
"gate_check": {
"rule1_method_explanation_exists": true,
"rule2_result_analysis_exists": true,
"rule3_solution_package_exists": false,
"all_gates_passed": false
},
"recommended_next_skill": "solution-package-builder",
"recommended_next_action": "Run solution-package-builder for Q4 to produce the writer-facing package. Then the paper writer can proceed."
}
Input state:
Output:
{
"paper_writing_summary": {
"status": "partial_draft_only",
"target_subquestion": "Q2",
"gate_check": {
"rule1_method_explanation_exists": false,
"rule2_result_analysis_exists": true,
"rule3_solution_package_exists": false,
"all_gates_passed": false
},
"drafted_sections": [
"paper/sections/problem_restatement.md (DRAFT — not Q2-dependent)",
"paper/sections/data_preprocessing.md (DRAFT — not Q2-dependent)"
],
"blocked_sections": [
"paper/sections/q2.tex (BLOCKED — awaiting final method explanation and solution package)"
],
"recommended_next_skill": "workflow-orchestrator"
}
}