---
name: task-creation
description: |
  Create and manage Firefrost Gaming tasks properly. Use this skill whenever:
  - Creating a new task (always use this format!)
  - Updating task status or priority
  - Moving tasks between states
  - Unsure about task file structure or frontmatter
  - Adding implementation specs for a task
  Tasks appear in Decap CMS at firefrostgaming.com/admin. This skill ensures proper formatting so tasks render correctly in the mobile task manager and CMS interface.
---

# Task Creation Skill

How to create, structure, and manage tasks in the Firefrost operations manual.

---

## 📁 TASK SYSTEM STRUCTURE

```
firefrost-operations-manual/
├── docs/tasks-index/          # High-level task cards (Decap CMS)
│   ├── task-026-modpackchecker.md
│   ├── task-087-arbiter-lifecycle.md
│   └── task-099-claude-projects.md
├── docs/tasks/                # Full implementation specs
│   ├── task-026-modpackchecker/
│   │   ├── README.md
│   │   └── phase-5-spec.md
│   └── task-094-restart-scheduler/
│       └── full-spec.md
├── BACKLOG.md                 # Historical reference only
└── BLOCKERS.md                # Historical (launch complete)
```

### Key Points

- **`docs/tasks-index/`** — Individual files for each task, shown in Decap CMS
- **`docs/tasks/`** — Detailed specs when needed (complex tasks only)
- **BACKLOG.md** — Historical, don't add new tasks here
- Tasks auto-appear at `firefrostgaming.com/admin` → 🔥 TASKS

---

## 📝 TASK FILE FORMAT

### Required Frontmatter

```yaml
---
task_number: 100
title: Task Title Here
status: Planned
priority: P2-Medium
is_blocker: false
owner: Michael
tags:
  - category
estimated_hours: 4
---
```

### Frontmatter Fields

| Field | Required | Values |
|-------|----------|--------|
| `task_number` | Yes | Integer (next available number) |
| `title` | Yes | Short descriptive title |
| `status` | Yes | `Planned`, `In Progress`, `Blocked`, `Complete` |
| `priority` | Yes | `P0-Blocker`, `P1-High`, `P2-Medium`, `P3-Low`, `P4-Personal` |
| `is_blocker` | Yes | `true` or `false` |
| `owner` | Yes | `Michael`, `Meg`, `Holly`, `Trinity` |
| `tags` | Yes | Array of category tags |
| `estimated_hours` | No | Integer estimate |

### Priority Colors (in UI)

| Priority | Color | Use For |
|----------|-------|---------|
| P0-Blocker | 🔴 Red | Launch-blocking, critical path |
| P1-High | 🟠 Orange | Important, do soon |
| P2-Medium | 🟡 Yellow | Standard priority |
| P3-Low | 🔵 Blue | Nice to have |
| P4-Personal | 🟣 Purple | Michael's personal projects |

---

## 📋 TASK BODY TEMPLATE

After the frontmatter, add markdown body:

```markdown
## Overview

Brief description of what this task accomplishes and why it matters.

## Current State

What exists now, what's been done, any context.

## Next Steps

- [ ] Step 1
- [ ] Step 2
- [ ] Step 3

## Links

- Full spec: `docs/tasks/task-XXX-name/README.md`
- Related: Task #YY, Task #ZZ
```

---

## ✅ COMPLETE EXAMPLE

**File:** `docs/tasks-index/task-100-example-task.md`

```markdown
---
task_number: 100
title: Example Task Title
status: Planned
priority: P2-Medium
is_blocker: false
owner: Michael
tags:
  - infrastructure
  - automation
estimated_hours: 8
---

## Overview

This task implements XYZ feature to improve ABC workflow.

## Current State

- Feature does not exist yet
- Related system ABC is in place
- Dependency on Task #87 (not blocking)

## Next Steps

- [ ] Design the architecture
- [ ] Implement core functionality
- [ ] Test with production data
- [ ] Deploy to Command Center

## Links

- Full spec: `docs/tasks/task-100-example/README.md`
- Related: Task #87 (Arbiter lifecycle)
```

---

## 🔢 FINDING THE NEXT TASK NUMBER

Before creating a task, find the next available number:

```bash
ls docs/tasks-index/ | grep -oP 'task-\K\d+' | sort -n | tail -1
```

Add 1 to the highest number found.

**Current highest (as of April 8, 2026):** Check the directory, likely in the 90s.

---

## 📂 WHEN TO CREATE FULL SPECS

### Simple Tasks (index file only)

- Single-session work
- Clear scope
- No complex implementation details
- Example: "Update footer text"

### Complex Tasks (index + full spec)

- Multi-phase work
- Database schema changes
- API design needed
- Multiple files/systems affected
- Example: "ModpackChecker Phase 5"

### Full Spec Structure

```
docs/tasks/task-XXX-name/
├── README.md           # Overview, architecture
├── phase-1-spec.md     # Phase 1 details
├── phase-2-spec.md     # Phase 2 details
└── database-schema.md  # If applicable
```

---

## 🔄 UPDATING TASK STATUS

When task status changes:

1. **Edit the frontmatter** — Change `status` field
2. **Update body** — Add completion notes or blockers
3. **Commit** with descriptive message

### Status Transitions

```
Planned → In Progress → Complete
              ↓
           Blocked → In Progress → Complete
```

### Commit Message Format

```
docs(task): Update Task #XX status to [STATUS]

[Brief description of what changed]

Chronicler: #YY
```

---

## ⚠️ COMMON MISTAKES

| ❌ Wrong | ✅ Correct |
|----------|-----------|
| Adding tasks to BACKLOG.md | Create file in `docs/tasks-index/` |
| Missing frontmatter fields | Include all required fields |
| Wrong priority format | Use exact format: `P2-Medium` |
| Spaces in filename | Use hyphens: `task-100-my-task.md` |
| Forgetting `is_blocker` | Always include, even if false |

---

## 🏷️ COMMON TAGS

Use consistent tags for filtering:

| Tag | Use For |
|-----|---------|
| `infrastructure` | Server, hosting, DevOps |
| `arbiter` | Arbiter backend work |
| `website` | 11ty site, Cloudflare Pages |
| `discord` | Discord bot, roles, automation |
| `marketing` | FOMO, social, content |
| `documentation` | Docs, standards, manuals |
| `automation` | n8n, scripts, scheduled tasks |
| `panel` | Pterodactyl, Blueprint, MVC |
| `accessibility` | Medical accommodations |
| `personal` | Michael's personal projects |

---

## 📱 MOBILE TASK MANAGER

Tasks appear at: `firefrostgaming.com/admin/mobile.html`

**Features:**
- Card-based UI
- Priority color coding
- Filter tabs by status
- Quick-edit dropdowns
- Touch-optimized (44px+ targets)

**For tasks to appear correctly:**
- Frontmatter must be valid YAML
- All required fields present
- File in `docs/tasks-index/` directory

---

## 🔗 LINKING TASKS

### In Task Bodies

```markdown
Related: Task #87, Task #92
Depends on: Task #26 (blocked until complete)
Blocks: Task #99
```

### In Commit Messages

```
feat(arbiter): Implement webhook retry logic

Adds exponential backoff for failed webhooks.

Task: #87
Chronicler: #68
```

---

## ✅ TASK CREATION CHECKLIST

Before committing a new task:

- [ ] File in `docs/tasks-index/` (not BACKLOG.md)
- [ ] Filename format: `task-XXX-short-name.md`
- [ ] All required frontmatter fields present
- [ ] `task_number` is unique and sequential
- [ ] `priority` uses exact format (e.g., `P2-Medium`)
- [ ] `status` is valid value
- [ ] `is_blocker` is true or false (not missing)
- [ ] `tags` is an array (even if single tag)
- [ ] Body has Overview and Next Steps sections
- [ ] Commit message references task number

---

**Fire + Frost + Foundation = Where Love Builds Legacy** 💙🔥❄️
