| name | submission-validation |
| description | Skill for validating submission folder structure, metadata completeness, abstract quality, claim falsifiability, code presence, and paper compilation.
|
Submission Validation
Use this skill when validating a paper submission before review begins.
All checks must pass (or explicitly warn) before dispatching reviewers.
Required Submission Structure
submission/
├── paper.tex or paper.md # Manuscript (REQUIRED)
├── abstract.txt # Standalone abstract (REQUIRED)
├── cover-letter.md # Motivation, claimed contributions (REQUIRED)
├── metadata.yaml # Structured metadata (REQUIRED)
├── paper.pdf # Compiled PDF (optional)
├── code/ # Source code (recommended for empirical)
│ ├── README.md # Setup and reproduction instructions
│ ├── requirements.txt # Dependencies
│ └── ...
├── data/ # Datasets or generation scripts
│ ├── README.md # Data provenance
│ └── ...
├── experiments/ # Experiment configs and results
│ ├── configs/
│ ├── results/
│ └── figures/
└── supplementary/ # Appendices, proofs, extended tables
└── ...
Validation Checks
1. Structure Check (BLOCKING)
validate_structure() {
SUBMISSION="$1"
ERRORS=0
if [ ! -f "$SUBMISSION/paper.tex" ] && [ ! -f "$SUBMISSION/paper.md" ]; then
echo "✗ MISSING: paper.tex or paper.md (required)"
ERRORS=$((ERRORS + 1))
fi
if [ ! -f "$SUBMISSION/abstract.txt" ]; then
echo "✗ MISSING: abstract.txt (required)"
ERRORS=$((ERRORS + 1))
fi
if [ ! -f "$SUBMISSION/cover-letter.md" ]; then
echo "✗ MISSING: cover-letter.md (required)"
ERRORS=$((ERRORS + 1))
fi
if [ ! -f "$SUBMISSION/metadata.yaml" ]; then
echo "✗ MISSING: metadata.yaml (required)"
ERRORS=$((ERRORS + 1))
fi
return $ERRORS
}
On failure → DESK REJECT with specific missing files listed.
2. Abstract Quality Check (BLOCKING)
validate_abstract() {
WORDS=$(wc -w < "$SUBMISSION/abstract.txt" | tr -d ' ')
if [ "$WORDS" -gt 300 ]; then
echo "✗ Abstract too long: $WORDS words (max 300)"
return 1
fi
if ! grep -qi "method\|approach\|algorithm\|technique\|framework" "$SUBMISSION/abstract.txt"; then
echo "⚠ Abstract may be missing methods description"
fi
if ! grep -qi "result\|achieve\|outperform\|improve\|show\|demonstrate" "$SUBMISSION/abstract.txt"; then
echo "⚠ Abstract may be missing results description"
fi
echo "✓ Abstract: $WORDS words"
}
On failure → RETURN FOR REVISION with specific issues.
3. Claims Check (BLOCKING)
validate_claims() {
CLAIMS=$(yq '.claims | length' "$SUBMISSION/metadata.yaml" 2>/dev/null || echo 0)
if [ "$CLAIMS" -eq 0 ]; then
echo "✗ No falsifiable claims found in metadata.yaml"
return 1
fi
echo "✓ Found $CLAIMS claims"
yq '.claims[]' "$SUBMISSION/metadata.yaml"
}
On failure → RETURN FOR REVISION.
4. Metadata Completeness
Required fields in metadata.yaml:
| Field | Required | Default |
|---|
title | Yes | — |
authors | Yes | — |
domain | Yes | — |
subdomain | Yes | — |
venue_target | Yes | — |
paper_type | Yes | — |
claims | Yes | — |
keywords | Recommended | [] |
reproducibility | Recommended | {} |
5. Code Check (WARNING)
validate_code() {
if [ -d "$SUBMISSION/code" ]; then
[ -f "$SUBMISSION/code/README.md" ] && echo "✓ code/README.md" || echo "⚠ code/README.md missing"
([ -f "$SUBMISSION/code/requirements.txt" ] || [ -f "$SUBMISSION/code/pyproject.toml" ] || [ -f "$SUBMISSION/code/package.json" ]) \
&& echo "✓ Dependencies declared" || echo "⚠ No dependency file found"
else
echo "⚠ No code/ directory (optional for non-empirical papers)"
fi
}
Not blocking — produces warnings only.
6. Compilation Check (BLOCKING)
validate_compilation() {
if [ -f "$SUBMISSION/paper.tex" ]; then
cd "$SUBMISSION" && pdflatex -interaction=nonstopmode paper.tex > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "✓ LaTeX compiles successfully"
else
echo "✗ LaTeX compilation failed"
return 1
fi
elif [ -f "$SUBMISSION/paper.md" ]; then
if [ -s "$SUBMISSION/paper.md" ]; then
echo "✓ Markdown paper found and non-empty"
else
echo "✗ paper.md is empty"
return 1
fi
fi
}
On failure → DESK REJECT.
Validation Report Format
validation_report:
submission: "<title from metadata>"
timestamp: "<ISO 8601>"
result: "pass" | "desk_reject" | "revision_needed"
checks:
structure: "pass" | "fail"
abstract: "pass" | "fail" | "warning"
claims: "pass" | "fail"
metadata: "pass" | "incomplete"
code: "pass" | "warning" | "not_applicable"
compilation: "pass" | "fail"
errors:
- "<specific error message>"
warnings:
- "<specific warning message>"