easypaper-academic-wri…
Enforce academic writing and LaTeX drafting conventions for EasyPaper outputs.
Generate a full academic paper from metadata using the EasyPaper Python SDK. Collects metadata interactively if not provided, then generates the paper directly.
$ npx -y skills add tsinghua-fib-lab/agentsociety --skill easypaper-paper-from-metadata --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/easypaper-paper-from-metadataContext preview
The summary Claude sees to decide when to auto-load this skill.
Generate a full academic paper from metadata using the EasyPaper Python SDK. Collects metadata interactively if not provided, then generates the paper directly.
description: Generate a full academic paper from metadata using the EasyPaper Python SDK. Collects metadata interactively if not provided, then generates the paper directly.
Use this skill when the user wants to generate an academic paper from metadata. It handles both metadata collection and paper generation in one workflow.
Have the user prepare a metadata JSON file that follows `examples/meta.json`. Treat that file as a schema/template reference, not as a runnable paper. For a runnable project-local sample, use `examples/template/meta.json`.
Load JSON as `PaperGenerationRequest`, then convert it to SDK inputs:
import json
from pathlib import Path
from easypaper import EasyPaper, PaperGenerationRequest
metadata_path = Path("metadata.json").resolve()
raw = json.loads(metadata_path.read_text(encoding="utf-8"))
def metadata_relative_path(value: str) -> str:
candidate = Path(value).expanduser()
if candidate.is_absolute():
return str(candidate)
return str((metadata_path.parent / candidate).resolve())
if not raw.get("materials_root"):
raw["materials_root"] = str(metadata_path.parent)
if raw.get("template_path"):
raw["template_path"] = metadata_relative_path(raw["template_path"])
if (
isinstance(raw.get("code_repository"), dict)
and raw["code_repository"].get("type") == "local_dir"
and raw["code_repository"].get("path")
):
raw["code_repository"]["path"] = metadata_relative_path(raw["code_repository"]["path"])
request = PaperGenerationRequest.model_validate(raw)
paper_metadata = request.to_metadata()
options = {
"output_dir": request.output_dir,
"save_output": request.save_output,
"compile_pdf": request.compile_pdf,
"figures_source_dir": request.figures_source_dir,
"target_pages": request.target_pages,
"enable_review": request.enable_review,
"max_review_iterations": request.max_review_iterations,
"enable_planning": request.enable_planning,
"enable_exemplar": request.enable_exemplar,
"enable_vlm_review": request.enable_vlm_review,
"enable_user_feedback": request.enable_user_feedback,
"artifacts_prefix": request.artifacts_prefix or "",
}
ep = EasyPaper(config_path=str(Path("easypaper_config.yaml").resolve()))
result = await ep.generate(paper_metadata, **options)Ask whether the user already has a complete metadata file or JSON object.
If provided:
If not provided, proceed to interactive collection.
Required fields:
1. `title`: paper title. 2. `idea_hypothesis`: core research question or hypothesis. 3. `method`: methodology, model, algorithm, or study design. 4. `data`: data sources, materials, or validation setup. 5. `experiments`: results, comparisons, ablations, and interpretation. 6. `references`: BibTeX entries or citation strings. Empty references are allowed but should be reported as a quality warning.
Optional fields:
Use public schema validation plus explicit checks:
Use `EasyPaper.generate(metadata, **options)` directly. No FastAPI server is needed.
For streaming:
async for event in ep.generate_stream(paper_metadata, **options):
print(f"{event.get('phase', '')}: {event.get('message', '')}")Show:
Final PDF selection priority: 1. `result.pdf_path` 2. `result.output_path/iteration_*_final/**/*.pdf` 3. latest `result.output_path/iteration_*` directory PDF 4. `result.output_path/paper.pdf`
If no PDF is found, explicitly report that the final PDF is unavailable and include compile error context.
Metadata should use relative paths where practical so examples and generated outputs remain portable.
Hand-written metadata:
Folder-generated metadata:
Config:
AgentSociety 2 is a modern, LLM-native agent simulation platform designed for social science research and experimental design. It provides a flexible framework for creating and managing intelligent agents in simulated environments.
Enforce academic writing and LaTeX drafting conventions for EasyPaper outputs.
Interactively build EasyPaper metadata from a research-materials folder using Claude Code's file-investigation tools. Output is…
Automatically set up EasyPaper environment including Python dependencies and LaTeX toolchain in an isolated environment.
Apply venue-specific constraints for EasyPaper generation.
Use when an experiment run has completed and the user wants rigorous interpretation, claim-driven charts, bilingual reports, or…
Create distinctive, production-grade frontend interfaces with high design quality. Use when building or polishing analysis HTML…