Kanban & Project Planning
Turn your Aexol specification into an executable project plan. The Kanban system generates a structured task backlog from your spec — each task targeting a specific entity, workflow, visitor capability, or infrastructure concern — then lets your coding agent execute those tasks one by one.
Overview
The Kanban board lives at /studio/kanban?projectId=your-project. It has four columns:
| Column | Meaning |
|---|---|
| BACKLOG | Tasks waiting to be prioritized |
| TODO | Ready to work — ordered by priority |
| IN PROGRESS | Agent is currently working on this task |
| DONE | Completed — completedAt timestamp recorded |
Each task carries:
- Title — what needs to be done
- Description — acceptance criteria, context, technical notes
- Priority (0–100) — higher = more urgent
- Tags — comma-separated:
auth,api,frontend,testing,devops - Assignee — team member responsible
Generating the Project Plan
- Open your project in Studio
- Navigate to the Generate panel
- Select "Project Plan" from the artifact type dropdown
- Choose a model (Claude 3.5 Sonnet recommended)
- Click Generate
The AI reads your .aexol specification and produces a structured task list.
What the AI analyzes from your spec
| Spec element | Tasks generated |
|---|---|
type definitions | One task per entity (CRUD, validation, schema) |
visitor capabilities | One task per permission boundary |
workflow steps | One task per workflow stage |
enum + union types | Validation and serialization tasks |
| Implicit infrastructure | Auth, error handling, logging, tests |
Priority bands
The AI assigns priorities automatically:
| Range | Category | Examples |
|---|---|---|
| 90–100 | Security / Auth | Login, JWT middleware, RBAC |
| 75–89 | Core Entities | User CRUD, Order model, Payment schema |
| 55–74 | Supporting Features | Email notifications, file upload |
| 35–54 | UX / Polish | Form validation, loading states, error pages |
| 10–34 | Nice-to-haves | Dark mode, analytics, admin dashboard |
Generation options
When calling via the backend API or Remote MCP, you can configure:
| Option | Type | Default | Description |
|---|---|---|---|
granularity | epic / story / task | task | Level of detail per card |
clearExisting | boolean | false | Delete existing backlog before generating |
maxTasks | number | 30 | Maximum tasks to generate |
defaultColumn | BACKLOG / TODO | BACKLOG | Where new tasks land |
curl -X POST "https://api.aexol.ai/mcp" \
-H "Authorization: Bearer sk-aexol-team-..." \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {
"name": "remote_start_inference",
"arguments": {
"spec": "...",
"commands": [
{
"artifactType": "PROJECT_PLAN",
"options": {
"granularity": "task",
"maxTasks": 25,
"defaultColumn": "BACKLOG"
}
}
]
}
}
}'Managing the Board
In Studio
Drag cards between columns. Click a card to see the full description, edit metadata, or delete.
Via API
All Kanban operations are available through the GraphQL API:
Create a task:
mutation {
createKanbanTask(input: {
projectId: "proj_abc",
title: "Implement JWT auth middleware",
description: "Add middleware that validates JWT tokens on protected routes",
priority: 95,
tags: "auth,security,api"
}) {
id
title
column
}
}
Move a task:
mutation {
moveKanbanTask(input: {
taskId: "task_xyz",
targetColumn: "DONE",
targetSortOrder: 0
}) {
id
column
completedAt
}
}
List tasks:
query {
kanbanTasks(projectId: "proj_abc") {
id
column
title
priority
tags
}
}
Agent-Driven Execution
Once your board is populated, the Spectral coding agent can execute tasks autonomously. See the Agent Kanban documentation for the full workflow.
Quick preview of the execution loop:
kanban_next → picks highest-priority TODO → IN PROGRESS
│
▼
Agent reads task description, implements (read/write/edit/bash)
│
▼
kanban_move → DONE
│
▼
kanban_next → next task
Re-planning
When your .aexol specification changes, re-generate the Project Plan. The AI performs a diff-based update:
- New spec elements → new tasks added to BACKLOG
- Removed spec elements → existing tasks marked with
[OBSOLETE]tag - Changed spec elements → task descriptions updated, priority recalculated
- Existing tasks not in the spec → left untouched (manual tasks)
Enable clearExisting: true if you prefer a fresh board on every generation.
Architecture
The Kanban system has two main components:
-
Backend — PostgreSQL-backed CRUD via GraphQL mutations + SSE real-time updates. Effector dirty-tracking detects changes and pushes board state to all connected browser tabs.
-
Agent Bridge — A built-in pi extension (
kanban-bridge.ts) that registers 7 tools the coding agent uses to interact with the board. The bridge reads authentication from~/.spectral/config.json, resolves the project ID from the Studio binding (.aexol/aexol.jsonc), and makes direct GraphQL calls to the backend.
Studio UI ←── GraphQL ──→ Backend (PostgreSQL + SSE)
↑
│ GraphQL (Bearer auth)
│
Kanban Bridge Extension
(cli-node/src/extensions/kanban-bridge.ts)
↑
│ pi.registerTool()
│
Spectral Coding Agent
(read/write/edit/bash + kanban_* tools)