agentic-backlog-scrum
Agentic Backlog Scrum
Use this skill whenever you are doing implementation work and need task tracking discipline.
What this skill is
- This skill is documentation for agent behavior.
- It defines workflow, guardrails, and tool usage conventions.
- It is not a database, API server, or business-logic runtime.
This skill assumes a local MCP server named agentic-backlog is available.
Runtime boundary
- The running backlog API/application is the source of truth.
- MCP is how the agent reads context from and sends operations to that running API.
- This skill only tells the agent how to behave when using MCP tools.
API bootstrap fallback (required)
If backlog MCP calls fail because the API is not reachable (connection refused, timeout, 5xx from missing service), the agent must bootstrap the API container before continuing.
- Pull latest API image:
docker pull lonelyww/agentic-backlog-elysia:latest
- Replace any stale container instance:
docker rm -f agentic-backlog-api || true
- Run API on localhost
:38117:docker run -d --name agentic-backlog-api -p 38117:8000 -e PORT=8000 -e BACKLOG_DB_PATH=/data/backlog.sqlite -v agentic-backlog-data:/data lonelyww/agentic-backlog-elysia:latest
- Verify health:
curl http://127.0.0.1:38117/api/health
- Retry the failed backlog MCP call.
Notes:
- Use Docker named volume
agentic-backlog-datato persist SQLite without host bind mount paths. - If MCP points to a different port, update
BACKLOG_API_BASE_URLto match (recommended default:http://127.0.0.1:38117/api).
MCP connectivity check (required)
After API bootstrap, validate MCP end-to-end before doing backlog operations:
- Confirm API health endpoint:
curl http://127.0.0.1:38117/api/health
- Run a lightweight MCP tool call to verify data path:
backlog.healththenbacklog.versionbacklog.identify_project
If the MCP tool call fails because the MCP server is not configured in the current client:
- Register a local MCP server named
agentic-backlogin the active client. - Use local command:
npx -y @hakenshi/agentic-backlog-mcp-server. - Set env:
BACKLOG_API_BASE_URL=http://127.0.0.1:38117/api.
If the API health check fails, run the API bootstrap fallback section above.
Client examples (optional):
- OpenCode:
opencode mcp addandopencode mcp list - Any MCP-capable client: add server
agentic-backlogwith the same command/env above
Trigger phrases
Use this skill proactively when the user says things like:
\agentic-backlog:add\agentic-backlog:remove\agentic-backlog:update\agentic-backlog:read\agentic-backlog:board\agentic-backlog:in-progress\agentic-backlog:show-task\agentic-backlog:update-task
Expected behavior by trigger:
- \agentic-backlog:add -> create a task (
backlog.create_task) - \agentic-backlog:remove -> delete only with explicit confirmation (
backlog.delete_task+confirm: "DELETE") - \agentic-backlog:update -> update task fields or status (
backlog.update_task/backlog.update_task_status) - \agentic-backlog:read -> fetch board/task snapshot (
backlog.get_board/backlog.get_console_table) - \agentic-backlog:board -> return board overview (
backlog.get_board+backlog.get_console_table) - \agentic-backlog:in-progress -> list active WIP (
backlog.list_taskswithstatus: in_progress) - \agentic-backlog:show-task -> find a specific task by title keywords, then show it (
backlog.find_tasks_by_title+backlog.get_task) - \agentic-backlog:update-task -> find a specific task by title keywords, then update it (
backlog.update_task_by_title)
Task-by-name behavior:
- Use user-provided title keywords to search current project tasks.
- Prefer exact title match; otherwise use best partial match.
- If multiple close matches exist, show top candidates and ask which one to use.
- For updates, always echo the matched task title/id before applying the change.
Core tools (CRUD)
backlog.create_taskbacklog.get_taskbacklog.list_tasksbacklog.find_tasks_by_titlebacklog.update_taskbacklog.update_task_by_titlebacklog.delete_task
Core tools (operational)
backlog.healthbacklog.version
When available in current MCP version:
backlog.get_focusbacklog.claim_taskbacklog.release_taskbacklog.restore_task
Capability check (required)
- Before relying on operational tools, verify availability in the current MCP server.
- If
backlog.health/backlog.versionare unavailable, fallback tobacklog.identify_projectas connectivity check. - If
backlog.get_focusis unavailable, fallback tobacklog.get_board+backlog.list_tasks(status=in_progress|blocked). - If
backlog.restore_taskis unavailable, communicate that restore is not exposed in this MCP version.
Goal
Keep a shared backlog that multiple AI agents can update consistently.
Mandatory workflow
- Identify project
- Call
backlog.identify_projectfirst. - Store returned
project.id.
- Call
- Get current board
- Call
backlog.get_boardand inspect WIP. - Call
backlog.get_focusto prioritize blocked/stale/high-impact work. - Refresh board before each major implementation step.
- When reporting progress to the user, call
backlog.get_console_table.
- Call
- Ensure active task exists
- If no suitable task exists, call
backlog.create_task.
- If no suitable task exists, call
- Start work
- Move task to
in_progresswithbacklog.update_task_statusorbacklog.update_task.
- Move task to
- During work
- Add short progress notes with
backlog.add_task_noteusing 3 fields:feito:bloqueio:proximo:
- Re-read the board after each note/status transition.
- Add short progress notes with
- On completion
- Before moving to
reviewordone, add a compact summary note with outcome + remaining risks. - Move to
reviewordone.
- Before moving to
- On blockers
- Move to
blockedand include reason.
- Move to
Status model
backlogtodoin_progressblockedreviewdonecancelled
Tool usage contract
Always include metadata when available:
source: agent/client name (for examplecodex,claude-code,opencode,cursor)agent_id: stable agent identity when availablesession_id: current conversation/session id when available
Ambiguity protocol (required)
- If a title query returns multiple plausible tasks, do not auto-apply update/delete.
- Show top 3 candidates (id, title, status, updated_at) and request explicit selection.
- Only proceed after user chooses one candidate.
Failure protocol (required)
- If MCP/API is unavailable, return this standard message:
Backlog indisponivel no momento. Vou restabelecer conexao e tentar novamente.
- MCP fail-fast behavior:
- The MCP may open a short circuit window after timeout/5xx errors and return immediate 503 responses.
- This is expected and prevents long agent stalls when API is down.
- During this window, use
backlog.healthandbacklog.versionas recovery probes.
- Then execute recovery in order:
backlog.health- API bootstrap fallback (section above)
backlog.version- Retry original operation once
- Retry rules:
- Retry only timeout/5xx.
- Do not retry 4xx validation/auth/conflict errors.
Planning mode
Use backlog.plan_from_context for fast task drafting from plain text.
- Default behavior is preview mode.
- Use
apply=trueto persist generated actions. - Apply only if actions are relevant to the current project scope.
Guardrails
- Do not perform large code changes without linking to a task.
- Keep notes objective and short.
- Prefer one active
in_progresstask per agent/session. - Deletions must be explicit: call
backlog.delete_taskwithconfirm: "DELETE". - Keep updates frequent: at least one status or note update per completed sub-step.