| name | ironclaw-hackathon |
| version | 0.3.2 |
| description | Official skill for the NEAR Legion's IronClaw Hackathon series. Register your agent and submit your final entry for judging. |
| author | Julien Carbonnell (NEAR Legion Barcelona) |
| trunk | nova-submit |
| tags | ["hackathon","near-legion","ironclaw","competition","nova"] |
| activation | {"keywords":["hackathon","register","registration","submit","submission","compete","skill-a-thon","clawathon"],"patterns":["register.*(hackathon|competition|skill-a-thon|clawathon)","sign me up","(submit|send).*(entry|submission|project)","(register|enroll).*agent","ready for judging","compete in"],"tags":["hackathon","competition"],"max_context_tokens":3000} |
ironclaw-hackathon
Official skill for the NEAR Legion IronClaw Hackathon. Two steps: register so staff can grant your agent access to the submission group, then submit your final entry, which is encrypted and uploaded to the hackathon's NOVA group for judging.
This skill is a branch of the nova-submit tool (its trunk). submit_final_entry calls the nova-submit tool to do the encryption and upload — that tool must be installed on the agent for submission to work.
CRITICAL CONSTRAINTS — READ FIRST
- This skill has exactly two methods:
register_competing_agent and submit_final_entry. Do nothing else.
- For registration, use ONLY
memory_read and memory_write.
- For submission, the ONLY tool to call is
nova-submit. Do not use the http tool, the shell tool, or any other tool to perform the upload.
- The participant's NOVA account ID is not a secret and may be written to memory during registration. The participant's NOVA API key is a secret: it is NEVER written to memory, NEVER echoed back in chat, and is only ever passed straight through to the
nova-submit tool as a parameter.
- Never report a successful submission unless the
nova-submit tool returned a CID. If the tool returns an error, the participant is NOT submitted — tell them clearly.
How the hackathon submission works
The hackathon collects submissions in a single NOVA group that the organizer owns. To upload into it, the participant's NOVA account must first be added as a member of that group — and only the organizer can do that. So there are two steps, in order:
- Register (
register_competing_agent) — the participant gives their NOVA account ID. The skill records it locally AND prints a registration block in the chat. The participant must copy that block and send it to the hackathon staff (event Telegram) — that is how the organizer learns the participant's NOVA account ID and can grant group access. The skill itself cannot send anything to the organizer; the participant relays the block.
- Submit (
submit_final_entry) — once access is granted, the participant provides their entry details and NOVA credentials, and the skill uploads the encrypted submission via the nova-submit tool.
The submission group
All submissions for this event go to one fixed NOVA group. The group ID is:
ironclaw-hackathon-260618
This is hardcoded for this event. A different city node running this skill changes only this value.
Method 1: register_competing_agent
Records the participant's intent to compete and their NOVA account ID, then prints a registration block the participant must send to the hackathon staff (event Telegram) so the organizer can add their NOVA account to the submission group.
Parameters (ask for any not already clear from the conversation):
| Parameter | Required | Notes |
|---|
agent_id | yes | The participant's IronClaw agent ID or a short handle. Used as the registration record's filename. No whitespace, slashes, or quotes. |
participant_name | yes | Name or @handle for the leaderboard. |
nova_account_id | yes | The participant's NOVA account, e.g. alice.nova-sdk.near. This exact account is what gets added to the submission group, and it MUST be the same account used later in submit_final_entry. If the participant registers one account and submits with another, the upload will fail. |
Important to tell the participant: the nova_account_id they give here must be the same NOVA account they will submit with. Make this explicit.
Flow:
- Collect the three fields. Read them back to the participant for confirmation.
- Validate
agent_id contains no whitespace, slashes, or quotes.
memory_write to hackathon/registrations/{agent_id}.md with this content:
# {participant_name} — {agent_id}
status: registered
registered_at_utc: {current UTC timestamp, ISO 8601}
nova_account_id: {nova_account_id}
- Print the registration block to the participant in the chat, exactly in this format, clearly fenced so it is easy to copy:
=== IRONCLAW HACKATHON REGISTRATION ===
participant_name: {participant_name}
agent_id: {agent_id}
nova_account_id: {nova_account_id}
- Tell the participant clearly: "You're registered locally. IMPORTANT: copy the registration block above and send it to the hackathon staff in the event Telegram group @NEARLegionBarcelona. The staff need your NOVA account ID to add your account to the submission group — until they do, your final submission will fail. This skill cannot send the block for you; you must relay it yourself."
The NOVA account ID is not sensitive, so writing it to memory and printing it in chat is fine. Do not ask for or store the NOVA API key here — that is only needed at submission time.
Method 2: submit_final_entry
Encrypts the participant's final entry and uploads it to the hackathon's NOVA group by calling the nova-submit tool.
Preconditions:
- The participant must have registered (
hackathon/registrations/{agent_id}.md exists). If not, ask them to run register_competing_agent first.
- The participant's NOVA account must already have been added to the
ironclaw-hackathon-260618 group by the organizer. The skill cannot check this; if the upload fails with an authorization error, this is the most likely cause — tell the participant to confirm with staff that their access was granted.
Parameters:
| Parameter | Required | Notes |
|---|
nova_account_id | yes | The participant's NOVA account. Must match the one used at registration. |
nova_api_key | yes | The participant's NOVA API key. A SECRET — see the handling note below. |
title | yes | Short project title. |
workflow_description | yes | One sentence describing the secure AI workflow. 280 characters maximum. |
demo_url | yes | A link to a pre-recorded demo video of about 5 minutes. Mandatory. Must be an https:// URL, and must be viewable publicly without a login — judges will not request access. |
github_repo | no | Optional. A public repository URL if the team has one. |
skills_list | no | Optional. Comma-separated names of custom skills or tools the team built. |
demo_notes | no | Optional. Anything judges should know before watching the demo or testing the agent. |
Validation before submitting:
workflow_description must be 280 characters or fewer. If longer, ask the participant to shorten it.
demo_url must be present and start with https://. If missing, ask for it — it is mandatory. Remind the participant it must be publicly viewable without login.
github_repo, if provided, must start with https://. If absent, that is fine — leave it blank.
- Ask only for missing required fields. Do not re-ask for what the participant already gave.
API KEY HANDLING — read carefully:
- The
nova_api_key is a secret. Do NOT write it to memory. Do NOT repeat it back in chat. Do NOT include it in any confirmation message.
- Pass it ONLY as the
api_key parameter of the nova-submit tool call.
- After a successful submission, tell the participant: "For your security, rotate your NOVA API key at nova-sdk.com now that the hackathon submission is done."
Flow:
- Collect the parameters. Validate as above.
- Build the submission file content as Markdown, in this exact format:
# {participant_name} — {agent_id}
submitted_at_utc: {current UTC timestamp, ISO 8601}
nova_account: {nova_account_id}
## Project
title: {title}
workflow_description: {workflow_description}
## Demo
demo_url: {demo_url}
## Links
github_repo: {github_repo, or "—" if not provided}
## Skills and tools
skills_list: {skills_list, or "—" if not provided}
## Notes
{demo_notes, or "—" if not provided}
Read this back to the participant for confirmation before uploading. This is the last step before judging — confirm the title, demo URL, and description are correct.
-
Call the nova-submit tool with these parameters:
account_id: the participant's nova_account_id
api_key: the participant's nova_api_key
group_id: ironclaw-hackathon-260618
filename: {agent_id}-submission.md
file_content: the Markdown submission content built in step 2
-
Read the tool's result:
- Success — the tool returns a JSON object with a
cid. Tell the participant their submission is uploaded, show them the CID as proof, and give the rotate-your-key reminder. Optionally update hackathon/registrations/{agent_id}.md to set status: submitted (NOVA account ID only — never the key).
- Failure — the tool returns an
error. The participant is NOT submitted. Show them the error. If it mentions authorization or membership, tell them their NOVA account has not yet been added to the submission group and they should contact staff. Do not claim success.
Error handling
- If the
nova-submit tool is not installed, submit_final_entry cannot work. Tell the participant the nova-submit tool must be installed on their agent first, and to follow the hackathon setup guide.
- If
memory_write fails during registration, surface the error and suggest one retry. If it fails again, the participant should flag staff.
- Never report success after a failed tool call or a failed write. A false confirmation is the worst possible outcome — a participant who believes they submitted but did not will miss judging.
What this skill does NOT do
- It does not handle NEAR AI Cloud credits — those are claimed separately with the event voucher (see the setup guide).
- It does not list or retrieve submissions. Judges collect and review submissions with the organizer's
judge.mjs tool, which reads the NOVA group directly. Participants do not need a list method.
- It does not push code to GitHub. The agent cannot do this. Submissions describe the work — title, workflow description, skills list, demo video — they do not contain the code itself. A public repo is an optional pointer when the team has one.
- It does not perform the encryption or upload itself. That is the
nova-submit tool's job. This skill formats the entry and calls the tool.