cannjudge-submit

Automates CANNJudge login, project download, operator submission, and result querying.

12|1|Updated Apr 17, 2026
One-click install
npx skills add https://github.com/hicann/cann-learning-hub --skill cannjudge-submit-hicann
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: cannjudge-submit
Source: https://github.com/hicann/cann-learning-hub/tree/main/skills/cannjudge-submit
Command: npx skills add https://github.com/hicann/cann-learning-hub --skill cannjudge-submit-hicann

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires requests, pycryptodome, and includes references (resource) components.

What problem does it solve? It removes the manual steps of logging into the CANNJudge platform, downloading operator or kernel project templates, packaging editable source files correctly, and polling evaluation results, so developers can iterate on Ascend NPU operator code without leaving their workflow. ## Core Features & Use Cases - Flexible Login with Session Reuse: Supports email/phone password login via agent conversation, hidden terminal input, or RSA ciphertext, with encrypted session persistence (DPAPI on Windows, mode-600 files on POSIX) and automatic reuse for up to 7 days. - Project Download and Type-Aware Submission: Resolves full problem URLs, downloads template ZIPs with metadata, and submits either npu_kernel_dev kernel files (files array) or traditional registry projects (tiling/host/kernel fields), with dry-run SHA-256 previews and read-only template protection. - Result Querying and Rankings: Polls submission status (Pass/Fail/Compile Error, etc.), reports per-testcase precision and timing, and fetches problem leaderboards. - Use Case: A developer working on an Ascend C kernel task downloads the Add problem template, edits kernel.asc, runs a dry-run check, submits, and receives a submission ID with 15/15 testcases passing—all through CLI commands or the Python SDK. ## Quick Start Ask the agent to log in to CANNJudge, download the project for a given problem URL, and submit the completed source code for evaluation.

Frequently Asked Questions about cannjudge-submit

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I submit an operator project to CANNJudge from the command line?

Run cannjudge_cli.py login to authenticate, then use download with the problem URL to fetch the template, edit the source files, and run submit with --project-dir pointing at your project. Use --dry-run first to preview files and SHA-256 hashes without submitting.

How do I log in to CANNJudge without exposing my password?

Use the terminal login flow where getpass hides password input, or use RSA ciphertext login with encrypt_password.py on your own machine. Passwords are never saved; only the user ID, cookies, and login time are stored in the session file.

What is the difference between npu_kernel_dev and registry project submissions?

npu_kernel_dev projects submit a files array containing editable .asc and .h kernel files from the project root. Registry projects submit four fields: tiling_h, tiling_key_h, host_cpp, and kernel_cpp collected from op_host and op_kernel directories. The CLI auto-detects the type from the problem's code_template field.

Can I reuse my CANNJudge session across Windows and Linux?

No. Windows sessions are encrypted with DPAPI bound to the current account and cannot be used on Linux. You must log in again on the Linux host under the same system account that will run downloads and submissions.

Why does my CANNJudge submission stop with a read-only template error?

The CLI compares read-only template files against the original online template and stops if any were modified, preventing accidental changes to the judging framework. Restore the original file content from the downloaded template and submit again.

What should I do if a CANNJudge submission times out without a submission ID?

Do not resubmit immediately. Query your existing submissions for that problem first to check whether the platform already accepted the request, since repeating the POST could create duplicate submissions.