6.3 KiB
AI Agent Workflow Guide for Tekton Dash
This document tells AI agents how to work on Tekton Dash tasks end-to-end.
1. Task Source: Notion MCP
All tasks live on the "TektonDash - Armageddon PR Tasks" Notion board.
Finding Tasks
CRITICAL: Always start by finding tasks from Notion. Priority order: P0 > P1 > P2 > P3. Status order: In Progress > To Do.
Example search for "Gauntlet" tasks:
Use: mcp_notion_API_post_search
query: "[Gauntlet]" or task name
filter: {"property": "object", "value": "page"}
Reading a Task
CRITICAL: The Description field contains the actual implementation requirements. TASKS.md defines workflow procedure only — each task's unique problem and solution are in Notion's Description field.
Always read full task details:
Use: mcp_notion_API_retrieve_a_page
page_id: "<task_page_id_from_search>"
Each task page has these properties:
| Property | Type | Purpose |
|---|---|---|
| Name | title | Task title, e.g. [Gauntlet] #1 Game Mode Registration |
| Status | select | To Do → In Progress → Done |
| Priority | select | P0 (critical) / P1 / P2 / P3 |
| Effort | select | S - Small / M - Medium / L - Large / XL - Epic |
| Sprint | select | Alpha / Beta / Release |
| ProjectType | select | CORE / CLIENT / SERVER / INFRA |
| Description | rich_text | Full task description — read this to understand what to do |
| Acceptance | checkbox | Check when task is verified complete |
| DueDate | date | Optional deadline |
| UnitTest | date | Optional test completion date |
Task Lifecycle
To Do → In Progress → Done
CRITICAL WORKFLOW:
- Read task from Notion: Use
mcp_notion_API_retrieve_a_page(page_id="...")to get full task details - Read Description field carefully: This contains the actual implementation requirements — file names, function signatures, integration points, RPC patterns, etc.
- Implement exactly what Description specifies: Don't invent your own approach — follow the Description's technical requirements
- Write unit tests: Follow pattern in
tests/directory (see GUT_SETUP_SKILLS.md) - Update changelog: Add entry to
CHANGELOG_DRAFT.md(consumer-facing language, not technical jargon) - Version management: Check git diff for existing version changes (see Version Bumping section below)
- Mark complete in Notion: Set
Status→Done, checkAcceptance✅
Use: mcp_notion_API_patch_page
page_id: "<task_page_id>"
properties: {"Status": {"select": {"name": "Done"}}, "Acceptance": {"checkbox": true}}
2. Code Structure
| Path | Purpose |
|---|---|
scripts/game_mode.gd |
GameMode enum + helpers (add new modes here) |
scripts/managers/ |
All game mode managers (lobby, stop_n_go, portal, gauntlet) |
scenes/main.gd |
Central orchestrator — init, setup, game start routing |
tests/ |
GUT unit tests — one file per task/feature |
Adding a New Game Mode
- Add enum to
scripts/game_mode.gd→ updatefrom_string(),mode_to_string(),get_all_modes(),is_restricted() - Add mode name to
LobbyManager.available_game_modesinlobby_manager.gd - Add arena name to
_update_available_areas()inlobby_manager.gd - Add manager var + init branch in
main.gd_init_managers() - Add setup branch in
_setup_host_game()and_setup_client_game() - Add start branch in
_start_game() - Add background in
_apply_arena_background()
3. Unit Testing
Pattern
All tests extend GutTest and live in tests/. Naming: test_<feature>.gd
extends GutTest
func before_all():
gut.p("=== Feature Tests [Task ID] ===")
func test_something():
assert_eq(actual, expected, "Description")
func after_all():
gut.p("=== Feature Tests Complete ===")
Running Tests
run_tests.cmd # all tests
run_tests.cmd test_gauntlet_registration # specific test
Reports saved to test_reports/ with timestamps.
4. Version Bumping
Before bumping, check git for existing uncommitted version changes:
git diff --cached -- project.godot CHANGELOG_DRAFT.md
git diff -- project.godot CHANGELOG_DRAFT.md
If version changes already exist (staged or unstaged):
→ APPEND your changelog bullet to the existing version block in CHANGELOG_DRAFT.md
→ DO NOT bump project.godot or export_presets.cfg — you're joining an in-progress batch
If NO version changes exist (clean state):
→ BUMP version (increment patch: 2.3.5 → 2.3.6)
→ UPDATE all locations below
Version appears in 4 locations — all must match:
| File | Field |
|---|---|
CHANGELOG_DRAFT.md |
## [X.Y.Z] — YYYY-MM-DD header |
project.godot |
config/version="X.Y.Z" |
export_presets.cfg |
application/file_version and application/product_version (per preset) |
export_presets.cfg |
export_path filenames containing version |
export_presets.cfg |
version/name (Android preset) |
Changelog Style
Entries are consumer-facing (readable by players). No internal jargon.
## [2.3.6] — 2026-05-22
- Added new game mode: Candy Cannon Survival
Bad: "Added GAUNTLET = 3 to GameMode.Mode enum" Good: "Added new game mode: Candy Cannon Survival"
5. Key Conventions
- Caveman Mode: Be terse. No filler. Execute first, talk second.
- Read task from Notion FIRST: Always use
mcp_notion_API_retrieve_a_pageto get the Description field before implementing - Description field is the spec: TASKS.md is workflow procedure only. Each task's unique requirements (file names, function signatures, RPC patterns, integration points) are in Notion's Description field
- Read before edit: Always check whole files before modifying
.gd,.tscn,.tres,.resfiles - Notion status flow:
To Do→In Progress→Done(never skip steps) - Test everything: Every completed task gets a
test_<feature>.gdintests/ - GUT framework: Tests use the Godot Unit Test (GUT) addon at
addons/gut/ - Version discipline: Check
git diff -- project.godot CHANGELOG_DRAFT.mdbefore bumping version (see Version Bumping section)