mcpbeat

Appendix Table Writer

willoscar/appendix-table-writer

| Curate reader-facing survey tables for the Appendix (clean layout + high information density), using only in-scope evidence and existing citation keys.

6k tokens
context cost
the whole folder, loaded on every use
4
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
496
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/WILLOSCAR/research-units-pipeline-skills --skill appendix-table-writer

What comes with it

16 129 bytes besides the instruction
assets/table_cell_hygiene.json
references/table_cell_hygiene.md
scripts/run.py

The instruction itself

17 sections, as written by the author

Appendix Table Writer (publishable survey tables)

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.

If you are unsure what to build, start with these two:

1) 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)

2) 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.

How to use it

Copy the folder

Take willoscar/appendix-table-writer from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.