Help us improve
Share bugs, ideas, or general feedback.
From tzd-labs
Use this skill when ready to compile a manuscript for journal submission, rebuilding after edits, or preparing a revision package. Triggers on "build upload package", "compile manuscript", "generate submission files", "rebuild manuscript", "prepare revision".
npx claudepluginhub shakestzd/tzd-labs --plugin tzd-labsHow this skill is triggered — by the user, by Claude, or both
Slash command
/tzd-labs:build-uploadThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate a complete journal upload package from Quarto manuscript sources and data files.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
Share bugs, ideas, or general feedback.
Generate a complete journal upload package from Quarto manuscript sources and data files.
Use this skill when:
Source Files Build Steps Output Files
----- ----- -----
_sections/*.qmd --+
references.bib --+---> Quarto render ------------------> Manuscript.docx
citation-style.csl --+ (cross-refs + citations resolved)
data/tables/*.csv -------> build_tables.py -----------------> Table 1-N.docx
(quartopress.table_builder)
data/figures/* -------> figure scripts ------------------> Figure 1-N.tiff
legends text -------> appended to Manuscript.docx ---> (in manuscript)
response letter -------> python-docx ---------------------> Response.docx
The master build_upload.py follows this pattern:
def main():
setup_output_dir()
# 0. Sync templates → rendered sections (parameterized numbers)
sync_sections() # Replaces <<VAR>> placeholders with Stats values
# 1. Validate prose (arithmetic + semantic consistency)
validate_prose() # Catches stale numbers, plural mismatches, etc.
# 2. Render manuscript (Quarto)
build_manuscript() # Assembles sections, replaces cross-refs, renders .docx
# 3. Build tables (quartopress.table_builder)
build_all_tables() # Each table from CSV/data -> .docx with three-line borders
# 4. Copy figures
copy_figures() # TIFF files to output with submission naming
# 5. Response to editor/reviewers
build_response() # Markdown -> .docx
Steps 0-1 are critical. Never render the manuscript without syncing templates first — this ensures all numbers in prose match the current data. See the parameterized-manuscript skill for the full pattern.
Since tables and figures are separate files (not embedded), Quarto cross-references (@tbl-, @fig-) won't resolve. The build script handles this:
_CROSS_REF_MAP = {
"@tbl-characteristics": "Table 1",
"@tbl-specs": "Table 2",
"@fig-workflow": "Figure 1",
"@fig-metrics": "Figure 2",
}
Numbering rule: Tables and figures are numbered in order of first reference in manuscript text.
After building, verify:
?@tbl-, ?@fig-)/fix-ai-tells)# Full rebuild
uv run python scripts/build_upload.py
# Tables only
uv run python scripts/build_tables.py