sincron-auto 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +195 -0
- package/agents/avaliador.md +290 -0
- package/agents/construtor.md +149 -0
- package/agents/estrutura.md +79 -0
- package/agents/gestor-projeto.md +195 -0
- package/agents/orquestrador.md +109 -0
- package/bin/install.js +449 -0
- package/commands/sincron-auto.md +406 -0
- package/docs/arquitetura.md +397 -0
- package/docs/cenarios-uso.md +292 -0
- package/docs/duvidas.md +170 -0
- package/docs/estruturas-dados.md +377 -0
- package/docs/exemplos-playwright.md +497 -0
- package/docs/fluxo-mensagens.md +180 -0
- package/docs/installation-guide.md +535 -0
- package/docs/mcp-instalacao.md +118 -0
- package/docs/metricas-performance.md +371 -0
- package/docs/relatorio-final-exemplo.md +200 -0
- package/docs/skills-vs-agents.md +107 -0
- package/docs/template-permissoes.json +83 -0
- package/package.json +34 -0
- package/skills/autorizacao/SKILL.md +78 -0
- package/skills/avaliacao/SKILL.md +55 -0
- package/skills/gerenciar/SKILL.md +60 -0
- package/skills/instalar-mcp/SKILL.md +59 -0
- package/skills/projetar/SKILL.md +53 -0
- package/skills/relatorio-final/SKILL.md +269 -0
- package/templates/settings-nenhuma.json +5 -0
- package/templates/settings-parcial.json +17 -0
- package/templates/settings-total.json +23 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$comment": "Templates de permissões para diferentes níveis de automação",
|
|
4
|
+
|
|
5
|
+
"automacao_total": {
|
|
6
|
+
"permissions": {
|
|
7
|
+
"allow": [
|
|
8
|
+
"Read",
|
|
9
|
+
"Write",
|
|
10
|
+
"Edit",
|
|
11
|
+
"Glob",
|
|
12
|
+
"Grep",
|
|
13
|
+
"Bash(git *)",
|
|
14
|
+
"Bash(npm *)",
|
|
15
|
+
"Bash(npx *)",
|
|
16
|
+
"Bash(node *)",
|
|
17
|
+
"Bash(pip *)",
|
|
18
|
+
"Bash(python *)",
|
|
19
|
+
"Bash(pytest *)",
|
|
20
|
+
"Bash(cargo *)",
|
|
21
|
+
"Bash(go *)",
|
|
22
|
+
"Bash(dotnet *)",
|
|
23
|
+
"Bash(mkdir *)",
|
|
24
|
+
"Bash(cp *)",
|
|
25
|
+
"Bash(mv *)",
|
|
26
|
+
"Bash(rm *)",
|
|
27
|
+
"Bash(touch *)",
|
|
28
|
+
"Bash(cat *)",
|
|
29
|
+
"Bash(ls *)",
|
|
30
|
+
"Bash(pwd)",
|
|
31
|
+
"Bash(echo *)",
|
|
32
|
+
"Bash(curl *)",
|
|
33
|
+
"Bash(wget *)",
|
|
34
|
+
"Bash(tar *)",
|
|
35
|
+
"Bash(unzip *)",
|
|
36
|
+
"Bash(powershell *)",
|
|
37
|
+
"Bash(cmd *)",
|
|
38
|
+
"Bash(code *)",
|
|
39
|
+
"Bash(claude *)",
|
|
40
|
+
"WebFetch",
|
|
41
|
+
"WebSearch",
|
|
42
|
+
"Task",
|
|
43
|
+
"Skill(*)",
|
|
44
|
+
"mcp__playwright__*",
|
|
45
|
+
"mcp__supabase__*",
|
|
46
|
+
"mcp__ide__*",
|
|
47
|
+
"mcp__context7__*",
|
|
48
|
+
"mcp__gscServer__*",
|
|
49
|
+
"NotebookEdit",
|
|
50
|
+
"AskUserQuestion"
|
|
51
|
+
],
|
|
52
|
+
"deny": []
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
"automacao_parcial": {
|
|
57
|
+
"$comment": "Apenas ferramentas core do Claude",
|
|
58
|
+
"permissions": {
|
|
59
|
+
"allow": [
|
|
60
|
+
"Read",
|
|
61
|
+
"Write",
|
|
62
|
+
"Edit",
|
|
63
|
+
"Glob",
|
|
64
|
+
"Grep",
|
|
65
|
+
"WebFetch",
|
|
66
|
+
"WebSearch",
|
|
67
|
+
"Task",
|
|
68
|
+
"Skill(*)",
|
|
69
|
+
"NotebookEdit",
|
|
70
|
+
"AskUserQuestion"
|
|
71
|
+
],
|
|
72
|
+
"deny": []
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
"automacao_nenhuma": {
|
|
77
|
+
"$comment": "Mantém permissões existentes no settings.local.json sem incluir novas",
|
|
78
|
+
"permissions": {
|
|
79
|
+
"allow": [],
|
|
80
|
+
"deny": []
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sincron-auto",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Plugin de automação multi-agente para Claude Code",
|
|
5
|
+
"bin": {
|
|
6
|
+
"sincron-auto": "bin/install.js"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"bin",
|
|
10
|
+
"commands",
|
|
11
|
+
"agents",
|
|
12
|
+
"skills",
|
|
13
|
+
"templates",
|
|
14
|
+
"docs"
|
|
15
|
+
],
|
|
16
|
+
"keywords": [
|
|
17
|
+
"automation",
|
|
18
|
+
"multi-agent",
|
|
19
|
+
"claude-code",
|
|
20
|
+
"plugin",
|
|
21
|
+
"development",
|
|
22
|
+
"workflow"
|
|
23
|
+
],
|
|
24
|
+
"author": "Sincron Framework",
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/MLTCorp/sincron-auto"
|
|
29
|
+
},
|
|
30
|
+
"homepage": "https://github.com/MLTCorp/sincron-auto#readme",
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=14.0.0"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autorizacao
|
|
3
|
+
description: Configure project permissions in settings.local.json based on automation level from .sincron-auto/request.json.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Autorizacao Skill
|
|
7
|
+
|
|
8
|
+
Configure Claude Code permissions based on automation level.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
ONLY during first-run setup by the Estrutura agent.
|
|
13
|
+
|
|
14
|
+
## Process
|
|
15
|
+
|
|
16
|
+
### Step 1: Read Automation Level
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
Read .sincron-auto/request.json → automation_level
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Map to level:
|
|
23
|
+
- "Total (Recomendado)" or "Total" → Total
|
|
24
|
+
- "Parcial" → Parcial
|
|
25
|
+
- "Nenhuma" → Nenhuma
|
|
26
|
+
|
|
27
|
+
### Step 2: Read Current Settings
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Read .claude/settings.local.json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If file doesn't exist, create initial structure:
|
|
34
|
+
```json
|
|
35
|
+
{ "permissions": { "allow": [] } }
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Step 3: Select and Read Template
|
|
39
|
+
|
|
40
|
+
**If Total:**
|
|
41
|
+
```
|
|
42
|
+
Read templates/settings-total.json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**If Parcial:**
|
|
46
|
+
```
|
|
47
|
+
Read templates/settings-parcial.json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**If Nenhuma:**
|
|
51
|
+
→ Skip to Step 5 (keep existing)
|
|
52
|
+
|
|
53
|
+
### Step 4: Merge Permissions
|
|
54
|
+
|
|
55
|
+
Merge template permissions into current settings:
|
|
56
|
+
```
|
|
57
|
+
newPermissions = [...currentPermissions, ...templatePermissions]
|
|
58
|
+
Remove duplicates
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Step 5: Write Updated Settings
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Write .claude/settings.local.json with merged permissions
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Step 6: Confirm
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
✅ Permissões configuradas!
|
|
71
|
+
Nível: [level]
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Constraints
|
|
75
|
+
|
|
76
|
+
- NEVER use AskUserQuestion (read level from file)
|
|
77
|
+
- NEVER overwrite existing permissions (merge only)
|
|
78
|
+
- ONLY modify permissions.allow array
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avaliacao
|
|
3
|
+
description: This skill should be used to perform comprehensive functional and visual validation using Playwright MCP. Validates all acceptance criteria of a task and maintains evaluation report.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Avaliacao Skill
|
|
7
|
+
|
|
8
|
+
This skill performs comprehensive testing and validation against acceptance criteria.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
### Step 1: Receive Input
|
|
13
|
+
|
|
14
|
+
You receive:
|
|
15
|
+
### Step 2: Read Files
|
|
16
|
+
|
|
17
|
+
Read all files_changed to understand implementation.
|
|
18
|
+
|
|
19
|
+
### Step 3: Functional Testing
|
|
20
|
+
|
|
21
|
+
Test each functional criterion:
|
|
22
|
+
- API endpoints
|
|
23
|
+
- Logic correctness
|
|
24
|
+
- Error handling
|
|
25
|
+
|
|
26
|
+
### Step 4: Visual Testing (if applicable)
|
|
27
|
+
|
|
28
|
+
Use Playwright MCP for UI criteria:
|
|
29
|
+
### Step 5: Collect Issues
|
|
30
|
+
|
|
31
|
+
For each failed criterion, document:
|
|
32
|
+
### Step 6: Update Report
|
|
33
|
+
|
|
34
|
+
Append to relatorio-avaliacao.json:
|
|
35
|
+
### Step 7: Check Attempt Limit (CRITICAL - PREVENTS DEADLOCK)
|
|
36
|
+
|
|
37
|
+
**BEFORE deciding result**, check limit:
|
|
38
|
+
|
|
39
|
+
### Step 8: Make Decision
|
|
40
|
+
|
|
41
|
+
**If limit NOT reached**:
|
|
42
|
+
|
|
43
|
+
- ALL criteria passed → - ANY critical/high issues → - Multiple medium issues →
|
|
44
|
+
**If limit reached**:
|
|
45
|
+
- \ (regardless of criteria)
|
|
46
|
+
|
|
47
|
+
### Step 9: Return Result
|
|
48
|
+
|
|
49
|
+
Return to Avaliador agent.
|
|
50
|
+
|
|
51
|
+
## Important Notes
|
|
52
|
+
|
|
53
|
+
- ALWAYS check limit BEFORE deciding
|
|
54
|
+
- NEVER allow infinite loops (limit prevents deadlock)
|
|
55
|
+
- ONLY modify relatorio-avaliacao.json
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gerenciar
|
|
3
|
+
description: This skill should be used for FIFO task queue management. Lists pending tasks, identifies next task by execution order, updates status, and returns task for Construtor.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Gerenciar Skill
|
|
7
|
+
|
|
8
|
+
This skill manages the FIFO task queue and selects the next task for execution.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
Use this skill to get the next pending task in FIFO order.
|
|
13
|
+
|
|
14
|
+
## Process
|
|
15
|
+
|
|
16
|
+
### Step 1: Read State
|
|
17
|
+
|
|
18
|
+
Read `sincron-auto-state.json` to get all tasks.
|
|
19
|
+
|
|
20
|
+
### Step 2: Filter Pending Tasks
|
|
21
|
+
|
|
22
|
+
Filter tasks where:
|
|
23
|
+
- `status === "pendente"`
|
|
24
|
+
- `abandoned !== true`
|
|
25
|
+
|
|
26
|
+
### Step 3: Sort by Execution Order
|
|
27
|
+
|
|
28
|
+
Sort filtered tasks by `execution_order` (ascending).
|
|
29
|
+
|
|
30
|
+
### Step 4: Select First Task
|
|
31
|
+
|
|
32
|
+
Select the FIRST task from sorted list (FIFO).
|
|
33
|
+
|
|
34
|
+
If no tasks match criteria, return:
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"status": "no_pending_tasks"
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Step 5: Update Task Status
|
|
42
|
+
|
|
43
|
+
Update selected task in state:
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"status": "em execução"
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Save state file.
|
|
51
|
+
|
|
52
|
+
### Step 6: Return Task
|
|
53
|
+
|
|
54
|
+
Return the task object to Gestor Projeto for delegation to Construtor.
|
|
55
|
+
|
|
56
|
+
## Important Notes
|
|
57
|
+
|
|
58
|
+
- STRICT FIFO: Always select task with lowest execution_order
|
|
59
|
+
- NEVER skip tasks (unless abandoned)
|
|
60
|
+
- ONE task at a time
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: instalar-mcp
|
|
3
|
+
description: Install required MCP servers (Context7 and Playwright). Use during first-run setup.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Instalar MCP Skill
|
|
7
|
+
|
|
8
|
+
Install Context7 and Playwright MCPs for Sincron-Auto.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
### Step 1: Check Existing MCPs
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
claude mcp list
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Check if context7 and playwright are already installed.
|
|
19
|
+
|
|
20
|
+
### Step 2: Install Context7 (if needed)
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
claude mcp add --transport http context7 https://mcp.context7.com/mcp --header "Header-Name: ctx7sk-f1688803-3139-4a02-93df-55bf946be647"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Step 3: Install Playwright (if needed)
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
claude mcp add playwright npx @playwright/mcp@latest
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Step 4: Verify
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
claude mcp list
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Confirm both MCPs appear in the list.
|
|
39
|
+
|
|
40
|
+
### Step 5: Report
|
|
41
|
+
|
|
42
|
+
**Success:**
|
|
43
|
+
```
|
|
44
|
+
✅ MCPs instalados:
|
|
45
|
+
- Context7 ✓
|
|
46
|
+
- Playwright ✓
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Failure:**
|
|
50
|
+
```
|
|
51
|
+
❌ Falha ao instalar MCPs:
|
|
52
|
+
[show manual commands]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Constraints
|
|
56
|
+
|
|
57
|
+
- ONLY install Context7 and Playwright
|
|
58
|
+
- DO NOT reinstall if already present
|
|
59
|
+
- Provide manual commands if automatic install fails
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: projetar
|
|
3
|
+
description: This skill should be used when creating or reviewing project planning. It analyzes requirements to create user stories and breaks them down into granular tasks with specific acceptance criteria.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Projetar Skill
|
|
7
|
+
|
|
8
|
+
This skill transforms user requirements into structured planning: user stories → tasks → acceptance criteria.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- Creating new project (first-time planning)
|
|
13
|
+
- Adding new features to existing project
|
|
14
|
+
- Reviewing/adjusting project scope
|
|
15
|
+
|
|
16
|
+
## Process
|
|
17
|
+
|
|
18
|
+
### Step 1: Analyze Requirements
|
|
19
|
+
|
|
20
|
+
Extract key functionality from user request.
|
|
21
|
+
|
|
22
|
+
### Step 2: Create User Stories
|
|
23
|
+
|
|
24
|
+
Format: "Como [user], eu quero [action] para [benefit]"
|
|
25
|
+
|
|
26
|
+
### Step 3: Break Into Tasks
|
|
27
|
+
|
|
28
|
+
One user story can generate multiple tasks. Each task should be granular and focused.
|
|
29
|
+
|
|
30
|
+
### Step 4: Define Acceptance Criteria
|
|
31
|
+
|
|
32
|
+
Each task gets multiple specific, testable criteria.
|
|
33
|
+
|
|
34
|
+
### Step 4.5: Classify Criteria (SMART CRITERIA - PREVENTS DEADLOCK)
|
|
35
|
+
|
|
36
|
+
For each criterion, optionally classify as:
|
|
37
|
+
|
|
38
|
+
- **isolated**: Testable with ONLY this task complete
|
|
39
|
+
- **dependent**: Requires OTHER tasks complete
|
|
40
|
+
- **integration**: Tests interaction between components
|
|
41
|
+
|
|
42
|
+
Guidelines:
|
|
43
|
+
- Early tasks → prefer isolated criteria
|
|
44
|
+
- Late tasks → can have dependent/integration criteria
|
|
45
|
+
- Create separate integration task at end
|
|
46
|
+
|
|
47
|
+
### Step 5: Order Tasks
|
|
48
|
+
|
|
49
|
+
Set execution_order field based on dependencies.
|
|
50
|
+
|
|
51
|
+
### Step 6: Return Tasks Array
|
|
52
|
+
|
|
53
|
+
Return structured tasks for Gestor Projeto to save in state.
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: relatorio-final
|
|
3
|
+
description: This skill should be used to compile a comprehensive user-friendly markdown report from technical evaluation data. Only use when Gestor Projeto notifies that all tasks are complete.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Relatorio Final Skill
|
|
7
|
+
|
|
8
|
+
This skill generates a user-friendly markdown report from the technical state and evaluation data after all tasks are processed.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
Use this skill ONLY when:
|
|
13
|
+
- All tasks have status `completo` OR `not_approved`
|
|
14
|
+
- No tasks remain with status `pendente` or `em execução`
|
|
15
|
+
- Gestor Projeto has notified completion
|
|
16
|
+
|
|
17
|
+
DO NOT use this skill:
|
|
18
|
+
- During task execution
|
|
19
|
+
- When tasks are still pending
|
|
20
|
+
- For intermediate progress reports
|
|
21
|
+
|
|
22
|
+
## Process
|
|
23
|
+
|
|
24
|
+
### Step 1: Read State Files
|
|
25
|
+
|
|
26
|
+
Read the following files:
|
|
27
|
+
|
|
28
|
+
1. `sincron-auto-state.json` - Project and task state
|
|
29
|
+
2. `relatorio-avaliacao.json` - Evaluation history
|
|
30
|
+
|
|
31
|
+
Verify both files exist and have valid JSON.
|
|
32
|
+
|
|
33
|
+
### Step 2: Extract Key Metrics
|
|
34
|
+
|
|
35
|
+
From `sincron-auto-state.json`, calculate:
|
|
36
|
+
|
|
37
|
+
```javascript
|
|
38
|
+
const totalTasks = state.tasks.length
|
|
39
|
+
const approvedTasks = state.tasks.filter(t => t.status === 'completo').length
|
|
40
|
+
const notApprovedTasks = state.tasks.filter(t => t.status === 'not_approved').length
|
|
41
|
+
const abandonedTasks = state.tasks.filter(t => t.abandoned === true).length
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
From `relatorio-avaliacao.json`, count:
|
|
45
|
+
|
|
46
|
+
```javascript
|
|
47
|
+
const totalEvaluations = evaluations.length
|
|
48
|
+
const rejections = evaluations.filter(e => e.result === 'rejected').length
|
|
49
|
+
const approvals = evaluations.filter(e => e.result === 'approved').length
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Step 3: Organize Content
|
|
53
|
+
|
|
54
|
+
Structure the report with the following sections:
|
|
55
|
+
|
|
56
|
+
1. **Header** - Project name, date, summary metrics
|
|
57
|
+
2. **Executive Summary** - High-level overview
|
|
58
|
+
3. **Tasks Aprovadas** - Successfully completed tasks
|
|
59
|
+
4. **Tasks Não Aprovadas** - Tasks that hit attempt limit (if any)
|
|
60
|
+
5. **Tasks Abandonadas** - User-abandoned tasks (if any)
|
|
61
|
+
6. **Histórico de Avaliações** - Evaluation timeline
|
|
62
|
+
7. **Recomendações** - Next steps based on results
|
|
63
|
+
|
|
64
|
+
### Step 4: Generate Markdown Content
|
|
65
|
+
|
|
66
|
+
Create markdown with this structure:
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
# Relatório Final - [Project Name]
|
|
70
|
+
|
|
71
|
+
**Data**: [YYYY-MM-DD HH:MM]
|
|
72
|
+
**Nível de Automação**: [total|parcial|nenhuma]
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Resumo Executivo
|
|
77
|
+
|
|
78
|
+
Este projeto consistiu em [total] tasks relacionadas a: [brief project description from user stories].
|
|
79
|
+
|
|
80
|
+
### Métricas Gerais
|
|
81
|
+
|
|
82
|
+
- ✅ **Tasks Aprovadas**: X/Y (Z%)
|
|
83
|
+
- ⚠️ **Tasks Não Aprovadas**: A/Y (B%)
|
|
84
|
+
- 🚫 **Tasks Abandonadas**: C/Y (D%)
|
|
85
|
+
- 🔄 **Total de Avaliações**: E
|
|
86
|
+
- 📊 **Taxa de Sucesso na Primeira Tentativa**: F%
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Tasks Aprovadas ✅
|
|
91
|
+
|
|
92
|
+
[For each approved task, create subsection]
|
|
93
|
+
|
|
94
|
+
### [Task ID]: [Task Name]
|
|
95
|
+
|
|
96
|
+
**User Story**: [Associated user story]
|
|
97
|
+
|
|
98
|
+
**Critérios Atendidos**:
|
|
99
|
+
- [Criterion 1]
|
|
100
|
+
- [Criterion 2]
|
|
101
|
+
- [...]
|
|
102
|
+
|
|
103
|
+
**Tentativas até Aprovação**: X
|
|
104
|
+
|
|
105
|
+
**Arquivos Modificados**:
|
|
106
|
+
- [file1.js]
|
|
107
|
+
- [file2.css]
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Tasks Não Aprovadas ⚠️
|
|
112
|
+
|
|
113
|
+
[If no tasks with status not_approved, show: "Nenhuma task ficou não aprovada."]
|
|
114
|
+
|
|
115
|
+
[For each not_approved task]
|
|
116
|
+
|
|
117
|
+
### [Task ID]: [Task Name]
|
|
118
|
+
|
|
119
|
+
**User Story**: [Associated user story]
|
|
120
|
+
|
|
121
|
+
**Tentativas**: [evaluation_attempts]/[max_evaluation_attempts]
|
|
122
|
+
|
|
123
|
+
**Motivo**: [not_approved_reason]
|
|
124
|
+
|
|
125
|
+
**Critérios que Falharam**:
|
|
126
|
+
- [Failed criterion 1]
|
|
127
|
+
- [Failed criterion 2]
|
|
128
|
+
|
|
129
|
+
**Último Issues Encontrados**:
|
|
130
|
+
|
|
131
|
+
[From last evaluation in relatorio-avaliacao.json for this task]
|
|
132
|
+
|
|
133
|
+
1. **[Issue Type]** ([Severity])
|
|
134
|
+
- **Descrição**: [Issue description]
|
|
135
|
+
- **Recomendação**: [Issue recommendation]
|
|
136
|
+
- **Critério Relacionado**: [related_criteria]
|
|
137
|
+
|
|
138
|
+
**O Que Fazer Agora**:
|
|
139
|
+
|
|
140
|
+
Based on the issues, suggest one or more:
|
|
141
|
+
|
|
142
|
+
- ✏️ **Investigar Manualmente**: [Specific files/areas to check]
|
|
143
|
+
- 🔄 **Reexecutar**: Use `/sincron-auto continuar` para tentar novamente
|
|
144
|
+
- 📋 **Replanejar**: Considere dividir em tasks menores
|
|
145
|
+
- ✅ **Aceitar Como Está**: Se não for crítico, pode seguir em frente
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Tasks Abandonadas 🚫
|
|
150
|
+
|
|
151
|
+
[If no abandoned tasks, show: "Nenhuma task foi abandonada."]
|
|
152
|
+
|
|
153
|
+
[For each abandoned task]
|
|
154
|
+
|
|
155
|
+
### [Task ID]: [Task Name]
|
|
156
|
+
|
|
157
|
+
**Motivo do Abandono**: [User requested abandonment]
|
|
158
|
+
|
|
159
|
+
**User Story Original**: [Associated user story]
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Histórico de Avaliações 📋
|
|
164
|
+
|
|
165
|
+
Timeline completo de todas as avaliações realizadas:
|
|
166
|
+
|
|
167
|
+
[For each evaluation in relatorio-avaliacao.json, chronologically]
|
|
168
|
+
|
|
169
|
+
**[Timestamp]** - Task [task_id]: [result]
|
|
170
|
+
- Tentativa: X/Y
|
|
171
|
+
- Issues encontrados: Z
|
|
172
|
+
- [Brief summary]
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Recomendações 💡
|
|
177
|
+
|
|
178
|
+
Based on the overall results, provide actionable recommendations:
|
|
179
|
+
|
|
180
|
+
### Próximos Passos Sugeridos
|
|
181
|
+
|
|
182
|
+
1. **Se Todas Tasks Aprovadas**:
|
|
183
|
+
- ✅ Projeto pronto para testes manuais
|
|
184
|
+
- ✅ Considere executar testes de integração end-to-end
|
|
185
|
+
- ✅ Deploy para ambiente de staging/produção
|
|
186
|
+
|
|
187
|
+
2. **Se Há Tasks Não Aprovadas**:
|
|
188
|
+
- ⚠️ Revisar tasks não aprovadas (veja seção acima)
|
|
189
|
+
- ⚠️ Investigar issues específicos listados
|
|
190
|
+
- ⚠️ Considere replanejar tasks problemáticas
|
|
191
|
+
- ⚠️ Ou aceite como não-crítico e prossiga
|
|
192
|
+
|
|
193
|
+
3. **Se Há Tasks Abandonadas**:
|
|
194
|
+
- 🚫 Avaliar se funcionalidade é realmente desnecessária
|
|
195
|
+
- 🚫 Ou retome com `/sincron-auto adicionar [feature]` se mudou de ideia
|
|
196
|
+
|
|
197
|
+
### Melhorias Futuras
|
|
198
|
+
|
|
199
|
+
[Based on patterns in failed tasks, suggest improvements]
|
|
200
|
+
|
|
201
|
+
Exemplo:
|
|
202
|
+
- Se múltiplas tasks falharam em testes visuais: "Considere revisar design system"
|
|
203
|
+
- Se múltiplas tasks falharam em integração: "Considere task dedicada a integração end-to-end"
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Arquivos Gerados
|
|
208
|
+
|
|
209
|
+
Este relatório foi gerado automaticamente pelo Sincron-Auto.
|
|
210
|
+
|
|
211
|
+
**Arquivos de referência**:
|
|
212
|
+
- Estado do projeto: `sincron-auto-state.json`
|
|
213
|
+
- Histórico de avaliações: `relatorio-avaliacao.json`
|
|
214
|
+
- Este relatório: `reports/relatorio-[project]-[date].md`
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
**Gerado por**: Sincron-Auto v1.0.0
|
|
219
|
+
**Data**: [YYYY-MM-DD HH:MM:SS]
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Step 5: Save Report
|
|
223
|
+
|
|
224
|
+
Generate filename with format:
|
|
225
|
+
```
|
|
226
|
+
reports/relatorio-[project-name]-[YYYY-MM-DD-HHMM].md
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Sanitize project name (remove spaces, special chars, lowercase).
|
|
230
|
+
|
|
231
|
+
Write the markdown content to the file.
|
|
232
|
+
|
|
233
|
+
### Step 6: Return Summary
|
|
234
|
+
|
|
235
|
+
Return a brief summary to Orquestrador:
|
|
236
|
+
|
|
237
|
+
```json
|
|
238
|
+
{
|
|
239
|
+
"report_path": "reports/relatorio-[...].md",
|
|
240
|
+
"total_tasks": X,
|
|
241
|
+
"approved_tasks": Y,
|
|
242
|
+
"not_approved_tasks": Z,
|
|
243
|
+
"abandoned_tasks": A,
|
|
244
|
+
"success_rate": "B%"
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Important Notes
|
|
249
|
+
|
|
250
|
+
- DO NOT modify any source files (read-only skill)
|
|
251
|
+
- DO NOT use overly technical language in report (user-friendly)
|
|
252
|
+
- ALWAYS include actionable recommendations
|
|
253
|
+
- NEVER skip not_approved tasks section (critical for user)
|
|
254
|
+
- Use emojis sparingly for visual organization
|
|
255
|
+
- Keep tone professional but accessible
|
|
256
|
+
- Focus on WHAT happened and WHAT TO DO NEXT
|
|
257
|
+
|
|
258
|
+
## Example Output Path
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
reports/relatorio-sistema-blog-2026-01-26-1430.md
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Constraints
|
|
265
|
+
|
|
266
|
+
- Maximum report length: No strict limit, but aim for clarity over length
|
|
267
|
+
- ALWAYS include all sections even if empty
|
|
268
|
+
- NEVER omit not_approved tasks (most important for user)
|
|
269
|
+
- DO NOT make assumptions about why tasks failed (use actual evaluation data)
|