Submit Ara logo

Submit Ara

Organization
ARA-Labs
submit-ara

ARA Submitter. Takes a research directory, makes sure it is a valid Agent-Native Research Artifact (ARA) — compiling it with the `compiler` skill when it is not — guarantees it carries an interactive visualization (`research-visualizer`), then publishes it to the ARA Hub and hands back one link plus an update token. The token is stored in the artifact's own `.ara_env`, so the next submission of the same work REPLACES it in place instead of creating a second entry. Publishes through the user's GitHub account when they have one, and straight to the Hub when they do not — no account required either way. TRIGGERS: submit, submit ara, publish ara, upload ara, share ara, push ara to github, add to ara hub, submit-ara, publish artifact, make my ara public, submit to a conference, update my submission, resubmit

Overview

PublisherARA-Labs
RepositoryAgent-Native-Research-Artifact
Skill namesubmit-ara
Stars
691
Forks
53
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by ARA-Labs on GitHub. Read the source before you install it.

Installation

Install the Submit Ara AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/ARA-Labs/Agent-Native-Research-Artifact/tree/main/skills/submit-ara
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/ARA-Labs/Agent-Native-Research-Artifact.git /tmp/Agent-Native-Research-Artifact
mkdir -p .claude/skills
cp -r /tmp/Agent-Native-Research-Artifact/skills/submit-ara .claude/skills/submit-ara
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Submit Ara in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Submit Ara on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Submit Ara is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

ARA Submitter

You take a research directory and get it published, viewable, and updatable: validate (or build) the ARA, guarantee it has a visualization, publish it, and hand back the link. You are a first-class agent — use your native tools directly, and invoke the compiler / research-visualizer skills when the steps below call for them.

What changed, and why it matters

A submission is not a one-shot event. The same artifact gets revised — a reviewer asks for another ablation, a number changes the night before a deadline — and the failure this skill exists to prevent is four near-identical entries on the Hub, none of them obviously the current one. So every submission writes an .ara_env into the artifact directory, and every later run reads it and updates the same artifact rather than creating a new one.

The other thing that changed: publishing no longer requires a GitHub account. A conference that accepts ARA as a submission format cannot ask its authors to be repo maintainers first. When the user has GitHub auth, GitHub stays the data layer and the Hub points at it; when they do not, the Hub stores the artifact itself. Both paths end at the same kind of Hub URL, and both are public on the Hub landing page. Say so before you upload, every time — an author who thought they were submitting privately has been badly served.

Set expectations FIRST

Before running any step, output the time notice — publishing is slow when it has to compile and/or visualize:

⏳ Publishing an ARA can take ~15 minutes. I may need to (1) compile your input into the ARA format, (2) generate the interactive visualization (figure rendering can be slow), and (3) upload it. The artifact will be publicly listed on the ARA Hub. I'll report progress at each step — please keep this session open.

Then announce each step as you start it (▶ Step 3/5: …).

Arguments

  • First positional path → the ARA directory (or raw research input). Default: the ARA most recently referenced in context, else the single dir under ./ara-output/, else ask.
  • --title <t> → artifact title. Default: PAPER.md's title.
  • --hosted / --github → force a route instead of auto-detecting (Step 4).
  • --new → submit as a separate artifact even though .ara_env exists. Rare; say why.
  • --no-viz → skip visualization (only if the dir already has one).
  • --dry-run → show what would be uploaded and stop.

Workflow (5 steps)

1. RESOLVE the input directory
2. VALIDATE it is an ARA   → if not, COMPILE with the `compiler` skill
3. VISUALIZE               → ensure trajectory.html, else run `research-visualizer`
4. ROUTE                   → update in place / GitHub / hosted
5. PUBLISH + REPORT        → one link, plus where the token went

Step 1 — Resolve the input

Resolve the argument to an absolute path and confirm it is a directory. Its name and location are irrelevant; only its structure matters (Step 2). You will never git init inside the user's working tree.

Step 2 — Validate it is an ARA (compile if not)

One observable test, identical to the visualizer's precondition: does the input expose a parseable trace/exploration_tree.yaml with ≥1 node, in a standard ARA layout (PAPER.md, logic/, src/, trace/, evidence/)?

  • Complete ARA → Step 3.
  • Not an ARA (a paper, a repo, run logs, notes) → invoke the compiler skill to produce one under ./ara-output/<slug>/, then use that. Never hand-roll an ARA.
  • Incomplete or stale → invoke the compiler skill to fill the same directory.

Run a light Seal Level 1 check (mandatory-core files present and non-empty, tree parses). If it still fails after one compiler pass, report the specific gaps and stop. Never publish a broken artifact.

Step 3 — Ensure the visualization

The Hub renders trajectory.html, and both publish paths refuse a bundle without one.

  • Check <ara-dir>/trajectory.html.
  • Missing (and not --no-viz) → invoke the research-visualizer skill, writing to <ara-dir>/trajectory.html. This is usually the slowest step; say it is underway.
  • Present → keep it; offer to regenerate only if Step 2 changed the ARA.

Step 4 — Route

Check three things, in this order, and take the first that applies.

  1. <ara-dir>/.ara_env exists → this artifact has been submitted before. Update it in place. Never create a second entry for work that already has one; that is the whole point of the file.
    • It carries ARA_SLUG + ARA_TOKEN → hosted. Re-run the uploader (Step 5); it finds the token itself.
    • It carries ARA_GITHUB=<owner>/<repo> → GitHub-backed. Push the updated files to that repo and re-register (Step 5, GitHub path).
  2. gh auth status succeeds (and no --hosted) → the GitHub path. The user already has the account, so their artifact should live in a repo they own and can cite.
  3. Otherwise → the hosted path. No account, no auth, no prerequisites.

State which route you took and why in one sentence. If gh is missing or unauthenticated, that is not an error to report — it is the hosted path, silently taken.

Step 5 — Publish and report

Hosted path. One command; it bundles the directory, uploads it, writes .ara_env, and adds that file to the ARA's .gitignore:

bash
python3 "${CLAUDE_SKILL_DIR}/scripts/submit.py" <ara-dir> --title "<title>"

Useful flags: --author (repeatable), --domain, --headline, --abstract, --steps, --dead-ends, --dry-run, --json. If ${CLAUDE_SKILL_DIR} is unset, use this skill's own directory, or the hosted mirror: curl -fsSL https://www.agenticresearch.sh/s/submit-ara.py | python3 - <ara-dir>. A re-run on the same directory updates it; the script prints the revision number.

GitHub path. Exact commands in ${CLAUDE_SKILL_DIR}/references/upload-and-hub.md §Publish. In summary: copy the ARA to a scratch dir, add a short README.md and a .gitignore (keeping trajectory.html, ignoring .ara_env), git init, then gh repo create <owner>/<slug> --public --source <stage> --remote origin --push. Then register it — POST /api/submit with the entry JSON — and verify the response is 2xx with ok:true before claiming it is on the Hub. Write ARA_GITHUB=<owner>/<repo> and ARA_URL=<hub url> into <ara-dir>/.ara_env so the next run updates instead of duplicating.

Final report, always:

  • 🌐 Hub: the artifact URL (this is the link to share or put in a submission form)
  • 🎞️ Full screen: the /raw/.../trajectory.html URL
  • 🔑 Token: written to <ara-dir>/.ara_env, gitignored, unrecoverable if lost — and the one thing that makes the next submission an update
  • 📊 Stats: claims / experiments / tree nodes / evidence figures, and whether this run compiled, visualized, created, or updated

Critical rules

  1. Set the ~15-minute expectation and the public-listing fact up front — before any step.
  2. Never publish a broken ARA — Step 2 must pass (after at most one compiler pass).
  3. .ara_env decides identity. If it exists, you are updating. Creating a second artifact for the same directory requires --new and an explicit reason said out loud.
  4. Never commit the token. The uploader gitignores .ara_env; on the GitHub path you must not stage it into the repo you push.
  5. The token cannot be recovered. Say this when you print it. A lost .ara_env means a new artifact and a dead link in whatever form the old one was pasted into.
  6. Publish from a clean copy on the GitHub path — never git init in the user's working tree or in ara-output/.
  7. trajectory.html ships with the artifact — it is what the Hub renders; both paths reject a bundle without it, and it is never gitignored.
  8. Don't reinvent the builders — compiling belongs to compiler, visualizing to research-visualizer. This skill orchestrates.
  9. Verify before claiming success — the hosted upload must return 201/200, the GitHub path's POST /api/submit must return 2xx with ok:true. If it failed, say the artifact is not on the Hub and give the retry command.

Reference files

Load on demand:

  • ${CLAUDE_SKILL_DIR}/references/upload-and-hub.md — the hosted API contract (POST /api/ara, PUT /api/ara/<slug>, the .ara_env format), the GitHub publish commands and slug derivation, the registry entry schema, and the Hub URL contract.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Submit Ara AI skill do?

ARA Submitter. Takes a research directory, makes sure it is a valid Agent-Native Research Artifact (ARA) — compiling it with the `compiler` skill when it is not — guarantees it carries an interactive visualization (`research-visualizer`), then publishes it to the ARA Hub and hands back one link plus an update token. The token is stored in the artifact's own `.ara_env`, so the next submission of the same work REPLACES it in place instead of creating a second entry. Publishes through the user's GitHub account when they have one, and straight to the Hub when they do not — no account required e...

Why use Submit Ara on TypingMind?

Because you install it once and use it with any model. Submit Ara is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Submit Ara in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/ARA-Labs/Agent-Native-Research-Artifact/tree/main/skills/submit-ara. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Submit Ara?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Submit Ara?

As many as you like. As long as a model supports skills, you can use Submit Ara with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Submit Ara AI skill free?

Yes. It is published on GitHub by ARA-Labs under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇