ai4s-research/ai4s-agent
Use when the user wants an end-to-end AI4S research pipeline — broad direction or specific topic in, full research package out (exploration + literature survey + experiment + paper). Meta-skill that chains the four downstream skills in order. Pure markdown, no Python runtime.
npx skills add https://github.com/ai4s-research/ai4s-skills --skill ai4s-agent
Top-level entry point for the AI4S research stack. This skill contains no work of its own — its only job is to call four downstream skills in the right order, with the right slug, and reuse intermediate artifacts by path convention.
direction → research-explorer → topic
topic → literature-survey (60+ real bib, 100+ recommended)
topic → experiment-suite (design + code + results + figures)
topic → paper-writer (assembles into 200+ cite PDF)
Each downstream skill is already single-stage and self-sufficient: its agent loads that skill's SKILL.md and produces the full final-quality artifact directly. There is no skeleton/enrichment split. This meta-skill only handles ordering, the path convention, and disclosure consistency.
research-explorer directly.Every skill computes the same slug from the same topic string:
import re, hashlib
def slug(t):
n = re.sub(r'[\s_]+', '-', re.sub(r'[^\w\s-]', '', t.lower().strip())).strip('-')[:40].rstrip('-')
h = hashlib.sha1(t.encode()).hexdigest()[:8]
return f"{n}-{h}"
Use the same string across all four skills. If the user provides a direction (not a topic), research-explorer runs against the direction; once a topic is chosen, the topic becomes the slug input for the remaining three.
research-explorer, pick a topic from its research_exploration.md, then proceed.research-explorer; go straight to the parallel branch (literature-survey, experiment-suite, paper-writer).results.json path; experiment-suite loads it instead of writing a simulated one, and the paper's \thanks drops the simulated clause.Load the research-explorer skill. Follow its 5 steps to produce:
output/research-explorer/<dir_slug>/latest/{research_exploration.md, topic_matrix.md, literature_pre_survey.md}
Discuss the candidate topics with the user. They pick one specific topic; that string becomes $TOPIC for the rest.
Load the literature-survey skill with $TOPIC. It produces:
output/literature-survey/<topic_slug>/latest/survey_paper/
├── main.pdf # the 6–20 page survey
├── main.tex
├── bibliography.bib # 60+ real entries, 100+ recommended (URL-anchored)
├── sections/, figures/
output/literature-survey/<topic_slug>/latest/literature_table.md
The survey bibliography must pass the temporal profile selected by
literature-survey; AI4S defaults to at least 60% from the current calendar
year and previous two years.
Load the experiment-suite skill with $TOPIC. It produces:
output/experiment-suite/<topic_slug>/latest/
├── experiment_design.md
├── experiment/ # runnable model.py / data.py / train.py / evaluate.py
├── results.json # with "simulated" + "provenance"
├── figures/ # publication-grade + manifest.json (basenames only)
└── experiment_report.md
If a real results path was provided in Step 1, the agent loads it here and results.json is flagged "simulated": false.
Load the paper-writer skill with $TOPIC. Its cross-skill conventions automatically pick up Steps 3 and 4:
bibliography.bib from output/literature-survey/<topic_slug>/latest/survey_paper/bibliography.bib, then expands it to 200+ inside paper-writer if needed.foundational references must not silently make a fast-moving bibliography
stale.
output/experiment-suite/<topic_slug>/latest/results.json.output/experiment-suite/<topic_slug>/latest/figures/.It produces:
output/paper-writer/<topic_slug>/latest/paper/
├── main.pdf # 8–14 pages, 200+ cites
├── main.tex
├── bibliography.bib
├── sections/, figures/
Report the four output roots to the user:
output/research-explorer/<dir_slug>/latest/ (if exploration ran)output/literature-survey/<topic_slug>/latest/output/experiment-suite/<topic_slug>/latest/output/paper-writer/<topic_slug>/latest/Plus the paper-writer stats per its references/05-quality-gate.md report format.
The same simulated flag must drive disclosure across all four artifacts:
experiment-suite/.../results.json → "simulated": true|false is the source of truth.experiment-suite/.../experiment_report.md top-of-page disclosure must match.paper-writer/.../main.tex \author{AI4S Agent\thanks{…}} must include the simulated clause iff results.json has "simulated": true.SKILL.md only.SKILL.md is the single source of truth for what counts as "done" for its artifact.claude --print headless) lives outside the skills. The skills stay pure.Take ai4s-research/ai4s-agent from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
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.