Show board overview, current status, visual board, or task details. The main command for understanding current state.
{{> helper-scripts show_list_tasks=true show_find_task=true show_find_plan=true show_list_projects=true show_get_project_progress=true show_get_project_tasks=true}}
{{> product-docs-scripts show_search_product=true}}
{{> engineering-docs-scripts show_search_engineering=true}} </context>
<prohibited> - Do not show data before determining the view - Do not suggest commands inappropriate for a task's current status - Do not make up information not found in task files </prohibited> <process> <step name="load_tasks" outputs="tasks"> <command>node .festinalente/scripts/festinalente.cjs list-tasks</command> <action>Read each task file to get id, title, status, labels, priority</action> <branch condition="count is 0"> <output> No tasks found.Create your first task:
/festina-create "Your task title"
</step>
<step name="load_directives">
{{> load-directives skill="overview"}}
</step>
<step name="load_projects" outputs="projects">
<note>AC-F4: If no projects exist, skip entirely and behave exactly as before.</note>
<command>node .festinalente/scripts/festinalente.cjs list-projects</command>
<branch condition="count is 0">
<action>Skip — no projects exist, proceed without project data (AC-F4)</action>
</branch>
<branch condition="projects exist (count > 0)">
<action>For each project, call: node .festinalente/scripts/festinalente.cjs get-project-progress {project-id}</action>
<action>Store project list with progress data for display in views</action>
</branch>
</step>
<step name="determine_view">
<branch condition="$ARGUMENTS provided">
<action>Parse $ARGUMENTS to determine view (e.g., "board", "visual", task ID, query)</action>
</branch>
<branch condition="$ARGUMENTS not provided">
<action>Set view = "current-status"</action>
<output>Showing current status (use arguments for other views: "board", "visual", or a task ID).</output>
</branch>
</step>
<!-- ============================================ -->
<!-- CURRENT STATUS -->
<!-- ============================================ -->
<step name="show_current_status" when="view is 'current-status'">
<action>Find tasks in active states: in-progress, finalize</action>
<action>For in-progress tasks, read plan.xml and count progress</action>
</output>
{{> skill-complete}}
</branch>
<branch condition="no active tasks">
<action>Find highest priority task in planned, scoped, or backlog</action>
<output>
No tasks in progress.
Ready to start:
Next: /festina-implement {id}
</output>
{{> skill-complete}}
</branch>
<output>
{For each active task, ordered by workflow stage:} {id}: {title}
Status: {status}
Progress: {completed}/{total} steps (if in-progress with plan)
Next: {appropriate command for status}
</output> <branch condition="projects were loaded (count > 0)"> <note>AC-F3: Show Projects section. Order: in-progress first, then open, then done.</note> <output>{For each project, ordered: in-progress first, then open, then done (AC-F3):} {project-id}: {project-title} ({status})
Progress: {done}/{total} tasks complete
Tasks: {comma-separated child task IDs} </output> </branch>
{{> skill-complete}} </step>
<!-- ============================================ --> <!-- BOARD OVERVIEW --> <!-- ============================================ --> <step name="show_board_overview" when="view is 'board-overview'"> <action>Group tasks by status</action> <action>For in-progress tasks, read plan and count progress</action> <note>Order columns by workflow: in-progress, finalize, planned, scoped, backlog, done</note> <note>Only show columns that have tasks</note> <output>In Progress ({count})
Check ({count})
Update Docs ({count})
PR ({count})
Planned ({count})
Scoped ({count})
Backlog ({count})
Done ({count})
{id}: {title} </output>
<branch condition="projects were loaded (count > 0)"> <note>AC-F3: Show Projects section. Order: in-progress first, then open, then done.</note> <output>{For each project, ordered: in-progress first, then open, then done (AC-F3):} {project-id}: {project-title} ({status})
Progress: {done}/{total} tasks complete
Tasks: {comma-separated child task IDs} </output> </branch>
{{> skill-complete}} </step>
<!-- ============================================ --> <!-- VISUAL BOARD --> <!-- ============================================ --> <step name="show_visual_board" when="view is 'visual-board'"> <action>Group tasks by status</action><note>Column order (workflow order):
backlog → "BACKLOG"
scoped → "SCOPED"
planned → "PLANNED"
in-progress → "IN PROGRESS"
check → "CHECK"
update-docs → "UPDATE DOCS"
pr → "PR"
done → "DONE"</note>
<note>Box format:
┌─ {COLUMN NAME} ({count}) ─────────────┐
│ {id}: {title} [{label}] │
└───────────────────────────────────────┘
```</note>
<note>Rendering rules:
- Box width: 45 characters (adjust based on longest task line, min 40, max 60)
- Truncate titles with `...` if task line exceeds box width minus padding
- Show label only if task has one (first label if multiple)
- Skip columns with zero tasks
- For Done column: show `Done (N tasks)` without a box
- Use consistent box width for all columns</note>
<output>
{Rendered visual board with ASCII boxes}
Done ({count} tasks)
</output>
<branch condition="projects were loaded (count > 0)">
<note>AC-F3: Show Projects section below the board. Order: in-progress first, then open, then done.</note>
<output>
## Projects
{For each project, ordered: in-progress first, then open, then done (AC-F3):}
**{project-id}: {project-title}** ({status}) — {done}/{total} tasks complete
Tasks: {comma-separated child task IDs}
</output>
</branch>
{{> skill-complete}}
</step>
<!-- ============================================ -->
<!-- OTHER (free text input) -->
<!-- ============================================ -->
<step name="handle_other_input" when="view is 'other'">
<action>Parse user input to determine intent</action>
<branch condition="input looks like a task ID (e.g. '007', '12', 'task 5')">
<action>Extract task ID and proceed to show_task_details</action>
</branch>
<branch condition="input mentions a label (e.g. 'show bugs', 'feature tasks')">
<action>Filter tasks by that label</action>
<output>
## Tasks labeled "{label}"
{For each matching task:}
- **{id}**: {title}
- Status: {status}
- Priority: {priority}
**Total:** {count} tasks
</output>
{{> skill-complete}}
</branch>
<branch condition="input mentions priority (e.g. 'high priority', 'urgent')">
<action>Filter tasks by priority</action>
<output>
## {priority} Priority Tasks
{For each matching task:}
- **{id}**: {title}
- Status: {status}
- Labels: {labels}
**Total:** {count} tasks
</output>
{{> skill-complete}}
</branch>
<branch condition="input asks about recent activity">
<output>Recent activity is tracked in task files. Use `/festina-overview` with a task ID to see details.</output>
{{> skill-complete}}
</branch>
<branch condition="cannot determine intent">
<output>
I didn't understand "{input}". You can:
- Enter a task ID (e.g. "007")
- Ask about labels (e.g. "show bugs")
- Ask about priority (e.g. "high priority tasks")
</output>
{{> skill-complete}}
</branch>
</step>
<!-- ============================================ -->
<!-- TASK DETAILS -->
<!-- ============================================ -->
<step name="show_task_details" when="showing specific task" outputs="taskId">
<command>node .festinalente/scripts/festinalente.cjs find-task {taskId}</command>
<action>Read the file at the `path` from JSON output</action>
<branch condition="task not found">
<output>Task {taskId} not found.</output>
{{> skill-complete}}
</branch>
<action>Extract title, status, labels, priority from task XML</action>
<action>Read plan.xml if exists, count checkboxes</action>
<action>Check for WIP Notes and Iterations sections</action>
<output>
## Task {taskId}: {title}
**Status:** {status}
**Labels:** {labels}
**Priority:** {priority}
{If plan exists:}
**Progress:** {completed}/{total} steps complete
**Remaining steps:**
{List unchecked items}
{If WIP Notes exist:}
**WIP Notes:**
{notes}
{If Iterations exist:}
**Previous attempt failed:** {last failure summary}
</output>
<action>Suggest next command based on status:</action>
<branch condition="status is backlog">
<output>**Next:** `/festina-scope {taskId}`</output>
</branch>
<branch condition="status is scoped">
<output>**Next:** `/festina-plan {taskId}`</output>
</branch>
<branch condition="status is planned">
<output>**Next:** `/festina-implement {taskId}`</output>
</branch>
<branch condition="status is in-progress">
<output>**Next:** `/festina-implement {taskId}` (resume)</output>
</branch>
<branch condition="status is finalize">
<output>**Next:** `/festina-finalize {taskId}` or `/festina-rework {taskId}`</output>
</branch>
<branch condition="status is awaiting-completion">
<output>**Next:** `/festina-complete {taskId}`</output>
</branch>
<branch condition="status is update-docs">
<output>**Next:** `/festina-docs {taskId}`</output>
</branch>
<branch condition="status is pr">
<output>**Next:** `/festina-merge {taskId}` or `/festina-rework {taskId}`</output>
</branch>
<branch condition="status is done">
<output>Task complete.</output>
</branch>
{{> directive-compliance}}
{{> skill-complete}}
</step>
</process>
<success_criteria>
- Defaults to current status when no arguments provided
- Only the determined view is shown
- Task details include next command suggestion
- Free text input is handled flexibly
- Appropriate next commands suggested based on board state
</success_criteria>
<example label="Current Status (default)">
User: `/festina-overview`
007: Add user authentication
/festina-implement 007005: Fix login redirect
/festina-finalize 005 or /festina-rework 005</example>
<example label="Board Overview">
User: `/festina-overview board`
In Progress (1)
Check (1)
Planned (2)
Backlog (3)
Done (2)
</example>
<example label="Visual Board">
User: `/festina-overview visual`
┌─ IN PROGRESS (1) ─────────────────────┐ │ 007: Add user authentication [feature]│ └───────────────────────────────────────┘ ┌─ CHECK (1) ───────────────────────────┐ │ 005: Fix login redirect [bug] │ └───────────────────────────────────────┘ ┌─ PLANNED (2) ─────────────────────────┐ │ 008: Add password reset │ │ 009: Email notifications │ └───────────────────────────────────────┘ ┌─ BACKLOG (3) ─────────────────────────┐ │ 010: Dark mode support │ │ 011: Performance improvements │ │ 012: Mobile responsive │ └───────────────────────────────────────┘
Done (2 tasks)
</example>
<example label="Other - Task ID">
User: `/festina-overview 007`
Status: in-progress Labels: [feature] Priority: high
Progress: 4/8 steps complete
Remaining steps:
Next: /festina-implement 007 (resume)
</example>
<example label="Other - Label Query">
User: `/festina-overview show bugs`
005: Fix login redirect
003: Memory leak in dashboard
Total: 2 tasks
</example>
<note>
**Box-Drawing Characters Reference:**
┌ ─ ┐ Top-left corner, horizontal, top-right corner │ │ Vertical sides └ ─ ┘ Bottom-left corner, horizontal, bottom-right corner
</note>
<next_steps>
Start a new task:
/festina-create
Work on a task (based on board state):
/festina-scope {id} /festina-plan {id} /festina-implement {id} /festina-finalize {id}
</next_steps>