DEV Community

YMori
YMori

Posted on • Edited on • Originally published at zenn.dev

Automate SIGNATE Competition Submissions with a CLI Tool: signate-deploy

The Problem

SIGNATE is a Japanese data science competition platform, similar to Kaggle.

I previously wrote about running SIGNATE competitions entirely on GitHub Actions — no local GPU needed. But the manual setup for each competition was tedious: creating workflows, configuring CLI auth, managing secrets.

So I built a CLI tool to automate it.

signate-deploy

pip install signate-deploy
Enter fullscreen mode Exit fullscreen mode

PyPI: https://pypi.org/project/signate-deploy/
GitHub: https://github.com/yasumorishima/signate-deploy

The tool handles the entire workflow:

signate-deploy init-repo   ← Initialize repo + generate GitHub Actions
signate-deploy setup-token ← Configure SIGNATE API token
signate-deploy init        ← Authenticate SIGNATE CLI
signate-deploy submit      ← Submit via GitHub Actions
Enter fullscreen mode Exit fullscreen mode

Setup Flow

1. Initialize a competition repository

python -m signate_deploy init-repo my-competition
cd my-competition
Enter fullscreen mode Exit fullscreen mode

This auto-generates:

  • .github/workflows/signate-submit.yml (submission workflow)
  • .github/workflows/signate-download.yml (data download workflow)
  • train.py (template)
  • .gitignore

2. Set up SIGNATE API token

python -m signate_deploy setup-token
Enter fullscreen mode Exit fullscreen mode

Interactive prompt for your SIGNATE email and API token, saved to GitHub Secrets.

3. Browse competition info

# List competitions
python -m signate_deploy competition-list

# List tasks for a competition
python -m signate_deploy task-list --competition-key <competition_key>

# List files for a task
python -m signate_deploy file-list --task-key <task_key>
Enter fullscreen mode Exit fullscreen mode

4. Download data and submit

python -m signate_deploy download
python -m signate_deploy submit
Enter fullscreen mode Exit fullscreen mode

Both run via gh workflow run — everything executes on GitHub Actions.

Commands

Command Description
init-repo Initialize repo + generate GitHub Actions
init Authenticate SIGNATE CLI
setup-token Save API token to GitHub Secrets
submit Submit via GitHub Actions
download Download data via GitHub Actions
competition-list List competitions
task-list List tasks
file-list List files

Real Example

I used signate-deploy for a SIGNATE competition. The entire flow — from token setup to submission — ran on GitHub Actions.

python -m signate_deploy setup-token   # Set up API token
python -m signate_deploy download      # Download data
# ... write training code ...
python -m signate_deploy submit        # Submit
Enter fullscreen mode Exit fullscreen mode

Gotchas

Windows PATH issue

On Windows, the signate-deploy command may not be on PATH. Use python -m signate_deploy instead.

competition_key vs task_key

The competition= value in SIGNATE URLs is the competition_key. To download data, you need the task_key, which is a separate identifier.

# Get task_key from competition_key
python -m signate_deploy task-list --competition-key <competition_key>

# Get file_key from task_key
python -m signate_deploy file-list --task-key <task_key>
Enter fullscreen mode Exit fullscreen mode

Summary

pip install signate-deploy
python -m signate_deploy init-repo my-competition
Enter fullscreen mode Exit fullscreen mode

Automates SIGNATE competition setup and submission via CLI.

PyPI: https://pypi.org/project/signate-deploy/
GitHub: https://github.com/yasumorishima/signate-deploy

Top comments (0)