79 lines
2.9 KiB
Markdown
79 lines
2.9 KiB
Markdown
---
|
|
name: ticket-executor
|
|
description: Execute Lesstime project tickets systematically - updates MCP statuses, follows project conventions, and logs learnings for self-improvement
|
|
---
|
|
|
|
# Ticket Executor Skill
|
|
|
|
## Purpose
|
|
Execute Lesstime project tickets end-to-end: read the ticket, implement the fix, update MCP status, and log learnings.
|
|
|
|
## Workflow
|
|
|
|
### 1. Receive Ticket
|
|
- Get ticket ID, title, description, tags (Backend/Frontend), priority, and current status
|
|
- Understand the scope from the title and description
|
|
|
|
### 2. Set Status to "En cours" (ID: 2)
|
|
- Use MCP `update-task` with `statusId: 2` before starting work
|
|
- MCP endpoint: `http://project.malio-dev.fr/_mcp`
|
|
- Auth: `Bearer 7e8b410a5b79b5c0432951dcee3a3a81e0731e86d9f70d8784ec079a2b759c64`
|
|
|
|
### 3. Analyze & Implement
|
|
Based on tag:
|
|
- **Backend**: Check `src/Entity/`, `src/State/`, `src/Controller/`, `src/Security/`, `config/`
|
|
- **Frontend**: Check `frontend/components/`, `frontend/composables/`, `frontend/pages/`, `frontend/services/`
|
|
|
|
Conventions to follow:
|
|
- PHP: `declare(strict_types=1)`, Symfony + PSR-12, API Platform patterns
|
|
- Frontend: TypeScript strict, `useApi()` composable, 4 spaces indent
|
|
- See CLAUDE.md for full conventions
|
|
|
|
### 4. Verify
|
|
- For Backend: `make php-cs-fixer-allow-risky` if PHP changed
|
|
- For Frontend: check TypeScript types, no `any`
|
|
- Read modified files to confirm correctness
|
|
|
|
### 5. Set Status to "Terminé" (ID: 5)
|
|
- Use MCP `update-task` with `statusId: 5` after successful implementation
|
|
|
|
### 6. Log Learnings
|
|
Append to `.claude/skills/ticket-executor/LEARNINGS.md`:
|
|
- What worked well
|
|
- Patterns discovered
|
|
- Gotchas encountered
|
|
- Time-saving shortcuts found
|
|
|
|
## MCP Session Management
|
|
The MCP HTTP transport requires a session. To call tools:
|
|
```bash
|
|
# Initialize session (get Mcp-Session-Id from response header)
|
|
curl -si -X POST http://project.malio-dev.fr/_mcp \
|
|
-H "Authorization: Bearer <token>" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"claude","version":"1.0"}}}'
|
|
|
|
# Call tool (use Mcp-Session-Id from init response)
|
|
curl -s -X POST http://project.malio-dev.fr/_mcp \
|
|
-H "Authorization: Bearer <token>" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Mcp-Session-Id: <session-id>" \
|
|
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"update-task","arguments":{"id":<taskId>,"statusId":<statusId>}}}'
|
|
```
|
|
|
|
## Status IDs
|
|
- 1 = A faire
|
|
- 2 = En cours
|
|
- 3 = Bloqué
|
|
- 4 = En attente de validation
|
|
- 5 = Terminé
|
|
|
|
## Learnings Integration
|
|
Before each ticket, read `LEARNINGS.md` to apply previous insights.
|
|
After each ticket, append new learnings. This creates a feedback loop that improves execution quality over time.
|
|
|
|
## Parallel Execution Rules
|
|
- Independent tickets (no shared files) can run in parallel via worktree agents
|
|
- Tickets modifying the same files must run sequentially
|
|
- Always verify no merge conflicts after parallel execution
|