Front Matter Writer (compatibility router)
Purpose: produce the paper-level shell while preserving the current output contract and approval gate.
Load Order
Always read:
references/overview.md
Read by task:
references/abstract_archetypes.mdforsections/abstract.mdreferences/context_projection.mdwhen adjusting how chapter briefs are projected into Introduction / Related Work contextreferences/introduction_jobs.mdfor Introduction body filesreferences/related_work_positioning.mdfor Related Work body filesreferences/discussion_conclusion_patterns.mdforsections/discussion.mdandsections/conclusion.mdreferences/forbidden_stems.mdbefore revising any reader-facing prosereferences/examples_good.mdandreferences/examples_bad.mdfor calibration only
Machine-readable assets:
assets/front_matter_context.schema.jsonassets/front_matter_context_schema.json(compatibility alias for checklist-aligned naming)assets/front_matter_contract.jsonassets/front_matter_templates.jsonassets/front_matter_context_projection.json
Inputs
Required:
DECISIONS.mdwithApprove C2outline/outline.ymloutline/mapping.tsvcitations/ref.bib
Optional but useful:
GOAL.mdqueries.mdpapers/retrieval_report.mdpapers/core_set.csvoutline/coverage_report.mdoutline/writer_context_packs.jsonl
Outputs
Keep the current output contract:
sections/abstract.mdsections/S<sec_id>.mdfor front-matter H2 bodiessections/discussion.mdsections/conclusion.mdoutput/FRONT_MATTER_REPORT.mdoutput/FRONT_MATTER_CONTEXT.json
Compatibility mode
Current mode is reference-first with script compatibility:
- writing guidance lives in
references/ - the structured job contract lives in
assets/front_matter_contract.json - the hook bank used by the script lives in
assets/front_matter_templates.json scripts/run.pystill owns approval checks, metadata parsing, deterministic hook selection, file emission, and context-sidecar writing
That means:
- preserve current file shapes and approval behavior
- treat the assets as the active semantic source for section jobs, hook banks, and render guardrails
- avoid moving prose policy back into
SKILL.md
Script boundary
Use scripts/run.py as a deterministic helper for:
- approval gate enforcement
- front-matter file discovery / path selection
- metadata extraction
- rendering from
assets/front_matter_contract.json+assets/front_matter_templates.json - writing the report and context sidecar
Do not treat the script as the main place for long-form writing guidance.
Output shape rules
Keep these stable:
sections/abstract.mdstarts with## Abstractor## 摘要- Introduction / Related Work
sections/S<sec_id>.mdfiles are body-only sections/discussion.mdincludes## Discussionsections/conclusion.mdincludes## Conclusion- methodology note appears once in normal prose, not as pipeline/process narration
Quick Start
python .codex/skills/front-matter-writer/scripts/run.py --workspace workspaces/<ws>
Troubleshooting
- If the front matter sounds narrated, reload
references/forbidden_stems.mdandreferences/examples_bad.md. - If Related Work turns into a survey list, reload
references/related_work_positioning.md. - If the asset and the references drift, fix the asset/routing inside this skill package rather than expanding
SKILL.mdagain.
Execution notes
When running this skill in compatibility mode, scripts/run.py currently reads these inputs directly:
DECISIONS.mdforApprove C2outline/outline.ymlto resolve Introduction / Related Work section idsoutline/mapping.tsvfor front-matter citation placement contextcitations/ref.bibfor citation-key scopeGOAL.md,queries.md,papers/retrieval_report.md,papers/core_set.csv,outline/coverage_report.md, andoutline/writer_context_packs.jsonlas optional context sources
Script
Quick Start
python .codex/skills/front-matter-writer/scripts/run.py --workspace <workspace_dir>
All Options
--workspace <dir>--unit-id <id>--inputs <path1;path2>--outputs <path1;path2>--checkpoint <C*>
Examples
python .codex/skills/front-matter-writer/scripts/run.py --workspace workspaces/<ws>
Troubleshooting
- If
DECISIONS.mdlacksApprove C2, the script will write a checkpoint block and exit. - If
citations/ref.biboroutline/outline.ymlis missing, restore those inputs before rerunning. - If the front matter feels too template-like, inspect the hook banks / section job graph before touching the script.