Creating a Task
Learn how to create a new task from scratch using the task skeleton template.
Getting Started
To create a new task, you'll start with the task skeleton template and customize it for your specific task.
Step 1: Download the Correct Task Skeleton
Download the ZIP file of the correct task skeleton from the the Slack channel's resources tab located at the top of the channel.
There are 3 task skeletons: - "Regular" Task Skeleton: Use for all non-UI-Building and non-Milestone tasks - UI Task Skeleton: Use for all UI-Building subtype tasks - Milestone Task Skeleton: Use for all tasks with milestones
Step 2: Extract and Rename
- Extract the ZIP file to your desired location
- Rename the unzipped folder to match your task name
Naming conventions:
- Use kebab-case (lowercase, hyphens)
- Be descriptive but concise
- Examples: parse-json-logs, debug-python-import, configure-nginx-ssl
Good task names:
- ✅ parse-json-logs
- ✅ debug-python-import
- ✅ configure-nginx-ssl
Bad task names:
- ❌ task1
- ❌ my-task
- ❌ test
Task Structure
After extracting and renaming, you'll have a folder structure like this:
your-task-name/
├── instruction.md # Task instructions (markdown)
├── task.toml # Task configuration and metadata
├── environment/ # Environment definition folder
│ ├── Dockerfile # OR docker-compose.yaml
│ └── [build files] # Additional environment files
├── solution/ # Oracle solution
│ └── solve.sh # Solution script + dependencies
│ └── solve1.sh...solveN.sh (optional) # If your task has milestones, one solution file per milestone
└── tests/ # Test verification
│ ├── test.sh # Test execution script
│ └── [test files] # Test dependencies
│ └── test_m1.py...test_mN.py (optional) # If your task has milestones, one test per milestone
└── milestones.md (optional) # If your task has milestones, include this file which should contain short descriptions (1-2 sentences) of each milestone.
Note: This structure follows the Harbor 2.0 task format. See Task Components for details on each file.
Next Steps
After downloading and renaming your task skeleton:
-
Edit
instruction.md- Write clear, unambiguous task instructions - Guide: Writing task instructions -
Configure
task.toml- Set up metadata and configuration - Guide: Task Components -
Set up environment - Configure Docker in the
environment/folder - Guide: Creating Docker environment -
Write the solution - Create
solution/solve.sh- Guide: Writing oracle solution -
Create tests - Write
tests/test.shand test files - Guide: Writing tests -
Test locally - Run the oracle agent to verify your task works - Guide: Oracle agent
Related Resources
- Running your task
- Writing oracle solution
- Writing tests
- Task Components
- Task Requirements