Appendix Table Writer (publishable survey tables)
Triggers & routing
- Trigger: appendix tables, publishable tables, survey tables, reader tables, 附录表格, 可发表表格, 综述表格.
- Use when: you have C4 artifacts (evidence packs + anchor sheet + citations) and want tables that look like a real survey (not internal logs).
Why this exists
The pipeline can produce index tables that are useful for planning/debugging, but read like internal artifacts.
This skill writes publishable, reader-facing tables that can live in an Appendix:
- cleaner layout
- higher information density
- survey-style organization (methods/benchmarks/risks), not intermediate state
Index tables remain in outline/tables_index.md and should not be copied verbatim into the paper.
Inputs
outline/table_schema.md (table intent + evidence mapping)
outline/tables_index.md (internal index; optional but recommended)
outline/subsection_briefs.jsonl
outline/evidence_drafts.jsonl
outline/anchor_sheet.jsonl
citations/ref.bib
- Optional:
GOAL.md
Read as needed:
references/table_cell_hygiene.md when Appendix table cells still copy raw paper self-narration or generic result wrappers
Machine-readable assets:
assets/table_cell_hygiene.json
Output
outline/tables_appendix.md
Roles (use explicitly)
Survey Table Curator (reader lens)
Mission: choose tables a reader actually wants in a survey Appendix.
Do:
- prefer 2-3 tables that answer big questions (methods, evaluation, risks)
- make rows comparable (same row unit across the table)
- make the table legible without reading the whole paper
Avoid:
- one-row-per-H3 index dumps
- columns named like internal axes ("axes", "blocking_missing", "evidence readiness")
Production Editor (layout)
Mission: make the table look publishable in LaTeX.
Do:
- keep columns <= 4
- keep cells short (phrases, not sentences)
- use
<br> sparingly (0-1 per cell; never a list dump)
Avoid:
- 6-8 columns with tiny unreadable text
- cells that look like notes (semicolon chains + slash lists + long parentheticals)
- slash-separated axis markers (A/B/C) in captions/headers/cells (post-merge voice gate will flag them); use commas or 'and' instead
- internal axis jargon that reads like an intermediate artifact once printed (e.g., calling table columns "tokens"); prefer "protocol details/metadata/assumptions"
Evidence Steward (verifiability)
Mission: prevent hallucinations.
Do:
- every row must include citations in a dedicated column (e.g., "Key refs")
- only restate what appears in evidence packs / anchor sheet
- when evidence is thin, prefer fewer rows with stronger grounding
Avoid:
- "representative works" with no supporting claim in packs/anchors
- adding benchmark/method details not present upstream
Table contract (publishable, Appendix-ready)
outline/tables_appendix.md must:
- contain >=1 Markdown table for
course_paper, or >=2 for survey / deep
- use a caption line before each table, e.g.
**Appendix Table A1. Representative systems by method family and evaluation setting**
- contain no headings (
#, ##, ###) inside the file (the merger adds an Appendix heading)
- contain no placeholders (
TODO, TBD, FIXME, ASCII three-dot ellipsis, unicode ellipsis)
- contain citations in rows using
[@BibKey] (keys must exist in citations/ref.bib)
- avoid pipeline jargon and index-like column names
Workflow (explicit inputs)
- Start from
GOAL.md (scope) and outline/table_schema.md (what each table must answer).
- Read
queries.md:draft_profile when present; course_paper uses one strong reader table by default, while survey / deep retain at least two.
- Use
outline/tables_index.md as a shortlist source, but do not paste it verbatim.
- Fill rows/cells using
outline/subsection_briefs.jsonl, outline/evidence_drafts.jsonl, and outline/anchor_sheet.jsonl (no guessing).
- Validate every cited key against
citations/ref.bib.
Recommended Appendix tables (default set)
If you are unsure what to build, start with these two:
- Method/architecture map (representative works)
- Row unit: work/system line (not H3 id)
- Columns (example):
- Work (short name)
- Core idea (1 short phrase)
- Loop + interface assumptions (1 short phrase; reader-facing)
- Key refs (2-4 cite keys)
- Evaluation protocol / benchmark map
- Row unit: benchmark / evaluation setting (or a canonical protocol dimension if benchmarks are thin)
- Columns (example):
- Benchmark / setting
- Task + metric (phrases, not definitions)
- Key protocol constraints (budget/cost/latency/steps/tool access/threat model)
- Key refs (2-4 cite keys)
Optional third (only if it stays clean):
3) Risk / threat-surface map
- Row unit: threat/failure mode category
- Columns: surface; why it matters; mitigation pattern; key refs
Positive / negative examples (style)
Bad (index table / internal notes):
- Column: "Axes"
- Cell:
planning / memory / tools / eval / safety (slash dump)
- Rows: every H3 id with 5+
<br> lines
Good (survey table):
- Column labels are reader-facing ("Core idea", "Task + metric", "Constraint")
- Cells are short phrases (no narration)
- A reader can scan and compare rows quickly
Also good (avoid intermediate-artifact tells):
- Don't label columns as "token(s)". If you need the idea, rewrite as "protocol details/metadata/assumptions".
- Avoid ASCII arrows like
-> inside cells; prefer natural phrasing (e.g., "interleaves reasoning traces with tool actions").
When to stop / route upstream
If you cannot fill a row without guessing:
- remove the row (prefer fewer, solid rows), and
- route upstream: strengthen
evidence-draft / anchor-sheet for that area.
Script (generator + validator)
Quick Start
uv run python .codex/skills/appendix-table-writer/scripts/run.py --help
uv run python .codex/skills/appendix-table-writer/scripts/run.py --workspace <workspace>
All Options
--workspace <workspace> (required)
--unit-id <id> (optional; used only for runner bookkeeping)
--inputs <a;b;c> (optional; ignored by the validator; kept for runner compatibility)
--outputs <relpath> (optional; defaults to outline/tables_appendix.md)
--checkpoint <C#> (optional; ignored by the validator)
Examples
Validate the default appendix tables file:
uv run python .codex/skills/appendix-table-writer/scripts/run.py --workspace workspaces/e2e-agent-survey-latex-verify-YYYYMMDD-HHMMSS
Validate a workspace that writes appendix tables to a non-standard path:
uv run python .codex/skills/appendix-table-writer/scripts/run.py --workspace <workspace> --outputs outline/tables_appendix.md
Notes:
- This script writes
outline/tables_appendix.md from the existing evidence artifacts and then validates the result.
- It always writes a short report to
output/TABLES_APPENDIX_REPORT.md.
1---2name: appendix-table-writer3description: Curate reader-facing survey tables for the Appendix (clean layout + high information density), using only in-scope evidence and existing citation keys.4---56# Appendix Table Writer (publishable survey tables)78## Triggers & routing910- **Trigger**: appendix tables, publishable tables, survey tables, reader tables, 附录表格, 可发表表格, 综述表格.11- **Use when**: you have C4 artifacts (evidence packs + anchor sheet + citations) and want tables that look like a real survey (not internal logs).121314## Why this exists1516The pipeline can produce index tables that are useful for planning/debugging, but read like internal artifacts.1718This skill writes publishable, reader-facing tables that can live in an Appendix:19- cleaner layout20- higher information density21- survey-style organization (methods/benchmarks/risks), not intermediate state2223Index tables remain in `outline/tables_index.md` and should not be copied verbatim into the paper.2425## Inputs2627- `outline/table_schema.md` (table intent + evidence mapping)28- `outline/tables_index.md` (internal index; optional but recommended)29- `outline/subsection_briefs.jsonl`30- `outline/evidence_drafts.jsonl`31- `outline/anchor_sheet.jsonl`32- `citations/ref.bib`33- Optional: `GOAL.md`3435Read as needed:36- `references/table_cell_hygiene.md` when Appendix table cells still copy raw paper self-narration or generic result wrappers3738Machine-readable assets:39- `assets/table_cell_hygiene.json`4041## Output4243- `outline/tables_appendix.md`4445## Roles (use explicitly)4647### Survey Table Curator (reader lens)4849Mission: choose tables a reader actually wants in a survey Appendix.5051Do:52- prefer 2-3 tables that answer big questions (methods, evaluation, risks)53- make rows comparable (same row unit across the table)54- make the table legible without reading the whole paper5556Avoid:57- one-row-per-H3 index dumps58- columns named like internal axes ("axes", "blocking_missing", "evidence readiness")5960### Production Editor (layout)6162Mission: make the table look publishable in LaTeX.6364Do:65- keep columns <= 466- keep cells short (phrases, not sentences)67- use `<br>` sparingly (0-1 per cell; never a list dump)6869Avoid:70- 6-8 columns with tiny unreadable text71- cells that look like notes (semicolon chains + slash lists + long parentheticals)72- slash-separated axis markers (A/B/C) in captions/headers/cells (post-merge voice gate will flag them); use commas or 'and' instead73- internal axis jargon that reads like an intermediate artifact once printed (e.g., calling table columns "tokens"); prefer "protocol details/metadata/assumptions"7475### Evidence Steward (verifiability)7677Mission: prevent hallucinations.7879Do:80- every row must include citations in a dedicated column (e.g., "Key refs")81- only restate what appears in evidence packs / anchor sheet82- when evidence is thin, prefer fewer rows with stronger grounding8384Avoid:85- "representative works" with no supporting claim in packs/anchors86- adding benchmark/method details not present upstream8788## Table contract (publishable, Appendix-ready)8990`outline/tables_appendix.md` must:91- contain >=1 Markdown table for `course_paper`, or >=2 for `survey` / `deep`92- use a caption line before each table, e.g. `**Appendix Table A1. Representative systems by method family and evaluation setting**`93- contain no headings (`#`, `##`, `###`) inside the file (the merger adds an Appendix heading)94- contain no placeholders (`TODO`, `TBD`, `FIXME`, ASCII three-dot ellipsis, unicode ellipsis)95- contain citations in rows using `[@BibKey]` (keys must exist in `citations/ref.bib`)96- avoid pipeline jargon and index-like column names9798## Workflow (explicit inputs)99100- Start from `GOAL.md` (scope) and `outline/table_schema.md` (what each table must answer).101- Read `queries.md:draft_profile` when present; `course_paper` uses one strong reader table by default, while `survey` / `deep` retain at least two.102- Use `outline/tables_index.md` as a shortlist source, but do not paste it verbatim.103- Fill rows/cells using `outline/subsection_briefs.jsonl`, `outline/evidence_drafts.jsonl`, and `outline/anchor_sheet.jsonl` (no guessing).104- Validate every cited key against `citations/ref.bib`.105106## Recommended Appendix tables (default set)107108If you are unsure what to build, start with these two:1091101) Method/architecture map (representative works)111- Row unit: work/system line (not H3 id)112- Columns (example):113 - Work (short name)114 - Core idea (1 short phrase)115 - Loop + interface assumptions (1 short phrase; reader-facing)116 - Key refs (2-4 cite keys)1171182) Evaluation protocol / benchmark map119- Row unit: benchmark / evaluation setting (or a canonical protocol dimension if benchmarks are thin)120- Columns (example):121 - Benchmark / setting122 - Task + metric (phrases, not definitions)123 - Key protocol constraints (budget/cost/latency/steps/tool access/threat model)124 - Key refs (2-4 cite keys)125126Optional third (only if it stays clean):1273) Risk / threat-surface map128- Row unit: threat/failure mode category129- Columns: surface; why it matters; mitigation pattern; key refs130131## Positive / negative examples (style)132133Bad (index table / internal notes):134- Column: "Axes"135- Cell: `planning / memory / tools / eval / safety` (slash dump)136- Rows: every H3 id with 5+ `<br>` lines137138Good (survey table):139- Column labels are reader-facing ("Core idea", "Task + metric", "Constraint")140- Cells are short phrases (no narration)141- A reader can scan and compare rows quickly142143Also good (avoid intermediate-artifact tells):144- Don't label columns as "token(s)". If you need the idea, rewrite as "protocol details/metadata/assumptions".145- Avoid ASCII arrows like `->` inside cells; prefer natural phrasing (e.g., "interleaves reasoning traces with tool actions").146147## When to stop / route upstream148149If you cannot fill a row without guessing:150- remove the row (prefer fewer, solid rows), and151- route upstream: strengthen `evidence-draft` / `anchor-sheet` for that area.152153## Script (generator + validator)154155### Quick Start156157- `uv run python .codex/skills/appendix-table-writer/scripts/run.py --help`158- `uv run python .codex/skills/appendix-table-writer/scripts/run.py --workspace <workspace>`159160### All Options161162- `--workspace <workspace>` (required)163- `--unit-id <id>` (optional; used only for runner bookkeeping)164- `--inputs <a;b;c>` (optional; ignored by the validator; kept for runner compatibility)165- `--outputs <relpath>` (optional; defaults to `outline/tables_appendix.md`)166- `--checkpoint <C#>` (optional; ignored by the validator)167168### Examples169170- Validate the default appendix tables file:171172 `uv run python .codex/skills/appendix-table-writer/scripts/run.py --workspace workspaces/e2e-agent-survey-latex-verify-YYYYMMDD-HHMMSS`173174- Validate a workspace that writes appendix tables to a non-standard path:175176 `uv run python .codex/skills/appendix-table-writer/scripts/run.py --workspace <workspace> --outputs outline/tables_appendix.md`177178Notes:179- This script writes `outline/tables_appendix.md` from the existing evidence artifacts and then validates the result.180- It always writes a short report to `output/TABLES_APPENDIX_REPORT.md`.