rbin-task-flow 1.2.0 → 1.4.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/.cursor/rules/git_control.mdc +6 -5
- package/.cursor/rules/task_estimate.mdc +10 -6
- package/.cursor/rules/task_execution.mdc +12 -5
- package/.cursor/rules/task_generation.mdc +29 -27
- package/.cursor/rules/task_refactor.mdc +20 -9
- package/.cursor/rules/task_report.mdc +10 -5
- package/.cursor/rules/task_review.mdc +20 -7
- package/.cursor/rules/task_work.mdc +25 -18
- package/.cursor/settings.json +1 -3
- package/.model-versions.json +1 -17
- package/.task-flow/README.md +43 -21
- package/.task-flow/contexts/example.png.txt +29 -0
- package/.task-flow/tasks.input.txt +6 -5
- package/CLAUDE.md +17 -7
- package/README.md +41 -82
- package/bin/cli.js +12 -12
- package/lib/estimate.js +72 -47
- package/lib/install.js +6 -47
- package/lib/report.js +41 -22
- package/lib/utils.js +16 -1
- package/lib/version.js +0 -4
- package/package.json +5 -8
- package/.gemini/settings.json +0 -5
- package/.task-flow/screens/example.png.txt +0 -23
- package/GEMINI.md +0 -32
package/CLAUDE.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Claude Code Instructions
|
|
2
2
|
|
|
3
|
+
## Models
|
|
4
|
+
|
|
5
|
+
Claude and Cursor use the **default model** of each environment. No specific model is set in this project; do not specify or require a particular model.
|
|
6
|
+
|
|
3
7
|
## Development Rules
|
|
4
8
|
|
|
5
9
|
All development rules are automatically loaded from `.cursor/rules/` directory. These rules include:
|
|
@@ -16,14 +20,20 @@ This project uses RBIN Task Flow for task management:
|
|
|
16
20
|
- **Task Definition**: Edit `.task-flow/tasks.input.txt` using simple format: `- Task description`
|
|
17
21
|
- **AI Commands**: Use AI-powered commands for task management:
|
|
18
22
|
- `task-flow: sync` - Synchronize tasks from tasks.input.txt
|
|
19
|
-
- `task-flow: run next X` - Work on next X subtasks
|
|
20
|
-
- `task-flow: run task X` - Execute all pending subtasks of task X
|
|
21
|
-
- `task-flow: status` - View current task status
|
|
22
|
-
- `task-flow: review` - Review completed tasks
|
|
23
23
|
- `task-flow: think` - Analyze code and suggest new tasks
|
|
24
|
-
- `task-flow:
|
|
25
|
-
- `task-flow:
|
|
26
|
-
- `task-flow:
|
|
24
|
+
- `task-flow: status` - View current task status
|
|
25
|
+
- `task-flow: run next X` - Work on next X subtasks
|
|
26
|
+
- `task-flow: run X` - Execute all pending subtasks of task X (simplified - no "task" needed)
|
|
27
|
+
- `task-flow: run X,Y` - Execute multiple tasks (comma-separated)
|
|
28
|
+
- `task-flow: run all` - Execute all tasks
|
|
29
|
+
- `task-flow: review X` - Review specific task(s) (comma-separated or "all")
|
|
30
|
+
- `task-flow: refactor X` - Refactor specific task(s) (comma-separated or "all")
|
|
31
|
+
- `task-flow: estimate X` - Estimate time for task X (simplified - no "task" needed)
|
|
32
|
+
- `task-flow: estimate X,Y` - Estimate multiple tasks (comma-separated)
|
|
33
|
+
- `task-flow: estimate all` - Estimate all tasks
|
|
34
|
+
- `task-flow: report X` - Generate implementation report for task X (simplified - no "task" needed)
|
|
35
|
+
- `task-flow: report X,Y` - Generate reports for multiple tasks (comma-separated)
|
|
36
|
+
- `task-flow: report all` - Generate reports for all tasks
|
|
27
37
|
- **Files**:
|
|
28
38
|
- `.task-flow/tasks.input.txt` - Define your tasks here
|
|
29
39
|
- `.task-flow/tasks.status.md` - Auto-generated status (DO NOT EDIT manually)
|
package/README.md
CHANGED
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
|
|
5
5
|

|
|
6
|
-

|
|
7
6
|

|
|
8
7
|

|
|
9
8
|

|
|
10
9
|

|
|
11
10
|
|
|
12
|
-
**Configuração com um comando para Claude Code,
|
|
11
|
+
**Configuração com um comando para Claude Code, Cursor e RBIN Task Flow em qualquer projeto**
|
|
13
12
|
|
|
14
13
|
<div style="margin-top: 20px; margin-bottom: 20px;">
|
|
15
14
|
<a href="#português">🇧🇷 Português</a> | <a href="#english">🇬🇧 English</a>
|
|
@@ -36,13 +35,13 @@
|
|
|
36
35
|
|
|
37
36
|
## O Que É Este Projeto?
|
|
38
37
|
|
|
39
|
-
RBIN Task Flow é um sistema de gerenciamento de tarefas alimentado por IA que configura automaticamente Claude Code
|
|
38
|
+
RBIN Task Flow é um sistema de gerenciamento de tarefas alimentado por IA que configura automaticamente Claude Code e Cursor IDE em qualquer projeto. Você define tarefas em texto simples e a IA gera subtarefas detalhadas e acionáveis automaticamente.
|
|
40
39
|
|
|
41
40
|
**Principais benefícios:**
|
|
42
41
|
- ✅ Instalação global NPM - instale uma vez, use em qualquer projeto
|
|
43
42
|
- ✅ Zero configuração - pronto para usar imediatamente
|
|
44
43
|
- ✅ Gerenciamento simples - escreva tarefas em texto, a IA faz o resto
|
|
45
|
-
- ✅ Múltiplos modelos de IA - Claude
|
|
44
|
+
- ✅ Múltiplos modelos de IA - Claude e Cursor configurados
|
|
46
45
|
|
|
47
46
|
## Instalação
|
|
48
47
|
|
|
@@ -60,7 +59,7 @@ rbin-task-flow init
|
|
|
60
59
|
# Edite .task-flow/tasks.input.txt e use:
|
|
61
60
|
# - task-flow: sync
|
|
62
61
|
# - task-flow: run next X
|
|
63
|
-
# - task-flow: run task X
|
|
62
|
+
# - task-flow: run X (ou task-flow: run X,Y ou task-flow: run all)
|
|
64
63
|
```
|
|
65
64
|
|
|
66
65
|
**Pronto!** RBIN Task Flow agora está disponível globalmente no seu sistema.
|
|
@@ -74,25 +73,27 @@ rbin-task-flow init # Inicializa no projeto atual
|
|
|
74
73
|
rbin-task-flow update # Atualiza configurações
|
|
75
74
|
rbin-task-flow version-check # Verifica atualizações de modelos
|
|
76
75
|
rbin-task-flow info # Mostra informações
|
|
77
|
-
rbin-task-flow estimate <
|
|
78
|
-
rbin-task-flow report <
|
|
76
|
+
rbin-task-flow estimate <ids> # Estima tempo (ex: "1" ou "1,2" ou "all")
|
|
77
|
+
rbin-task-flow report <ids> # Gera relatório (ex: "1" ou "1,2" ou "all")
|
|
79
78
|
```
|
|
80
79
|
|
|
81
80
|
### Comandos da IA - Por Que Usar?
|
|
82
81
|
|
|
83
|
-
Após inicializar, use estes comandos na IA (Cursor/Claude
|
|
82
|
+
Após inicializar, use estes comandos na IA (Cursor/Claude) para gerenciar tarefas automaticamente:
|
|
84
83
|
|
|
85
84
|
| Comando | Por Que Usar | Feature Principal |
|
|
86
85
|
|---------|--------------|-------------------|
|
|
87
86
|
| `task-flow: sync` | **Sincroniza** tarefas do arquivo texto com o sistema | Mantém tudo sincronizado automaticamente - adiciona novas, remove deletadas, preserva seu progresso |
|
|
88
87
|
| `task-flow: think` | **Descobre** tarefas que você esqueceu | Analisa código e sugere tarefas que faltam (testes, refatoração, documentação) |
|
|
89
|
-
| `task-flow: run next X` | **Automatiza** o trabalho nas próximas subtarefas | A IA trabalha nas próximas X subtarefas sequencialmente, você só acompanha |
|
|
90
|
-
| `task-flow: run task X` | **Completa** uma tarefa inteira de uma vez | Executa todas as subtarefas de uma tarefa específica (permite trabalho paralelo) |
|
|
91
88
|
| `task-flow: status` | **Visualiza** o progresso rapidamente | Vê resumo com tasks completas, em andamento e quantas subtarefas faltam |
|
|
92
|
-
| `task-flow:
|
|
93
|
-
| `task-flow:
|
|
94
|
-
| `task-flow:
|
|
95
|
-
| `task-flow:
|
|
89
|
+
| `task-flow: run next X` | **Automatiza** o trabalho nas próximas subtarefas | A IA trabalha nas próximas X subtarefas sequencialmente, você só acompanha |
|
|
90
|
+
| `task-flow: run X` | **Completa** uma tarefa inteira de uma vez | Executa todas as subtarefas de uma tarefa específica (permite trabalho paralelo) |
|
|
91
|
+
| `task-flow: run X,Y` | **Completa** múltiplas tarefas | Executa tarefas separadas por vírgula (ex: `task-flow: run 10,11`) |
|
|
92
|
+
| `task-flow: run all` | **Completa** todas as tarefas | Executa todas as tarefas pendentes |
|
|
93
|
+
| `task-flow: review X` | **Garante** qualidade do trabalho | Verifica tarefas específicas (ex: `task-flow: review 1` ou `task-flow: review 10,11` ou `task-flow: review all`) |
|
|
94
|
+
| `task-flow: refactor X` | **Melhora** código sem quebrar | Refatora tarefas específicas (ex: `task-flow: refactor 1` ou `task-flow: refactor 10,11` ou `task-flow: refactor all`) |
|
|
95
|
+
| `task-flow: estimate X` | **Estima** tempo para gestão | Calcula estimativa de tempo (ex: `task-flow: estimate 1` ou `task-flow: estimate 10,11`) |
|
|
96
|
+
| `task-flow: report X` | **Documenta** implementação | Gera relatório detalhado (ex: `task-flow: report 1` ou `task-flow: report 10,11`) |
|
|
96
97
|
|
|
97
98
|
**Fluxo típico:**
|
|
98
99
|
|
|
@@ -114,13 +115,13 @@ cd meu-projeto && rbin-task-flow init
|
|
|
114
115
|
|
|
115
116
|
## Visão Geral
|
|
116
117
|
|
|
117
|
-
Repositório centralizado de configurações e regras de desenvolvimento que podem ser instaladas instantaneamente em qualquer projeto. Fornece configuração completa para Claude Code,
|
|
118
|
+
Repositório centralizado de configurações e regras de desenvolvimento que podem ser instaladas instantaneamente em qualquer projeto. Fornece configuração completa para Claude Code, Cursor IDE e RBIN Task Flow - um sistema simples de gerenciamento de tarefas alimentado por IA.
|
|
118
119
|
|
|
119
120
|
### Principais Recursos
|
|
120
121
|
|
|
121
122
|
- **Instalação Global NPM** - Instale uma vez, use em qualquer lugar com `npm install -g rbin-task-flow`
|
|
122
123
|
- **Gerenciamento Simples de Tarefas** - Defina tarefas em texto simples, a IA gera subtarefas detalhadas
|
|
123
|
-
- **Múltiplos Modelos de IA** - Claude Code Sonnet
|
|
124
|
+
- **Múltiplos Modelos de IA** - Claude Code Sonnet configurado e pronto para uso
|
|
124
125
|
- **.gitignore Discreto** - Configurações de IA ocultas com comentários genéricos
|
|
125
126
|
- **Zero Configuração** - Pronto para usar imediatamente
|
|
126
127
|
- **RBIN Task Flow** - Gerenciamento de tarefas alimentado por IA com interface de texto simples
|
|
@@ -129,7 +130,7 @@ Repositório centralizado de configurações e regras de desenvolvimento que pod
|
|
|
129
130
|
|
|
130
131
|
- **Sistema Operacional:** macOS, Linux ou Windows (WSL)
|
|
131
132
|
- **Ferramentas:** Git, Bash, Node.js
|
|
132
|
-
- **Necessário:** Claude Code CLI
|
|
133
|
+
- **Necessário:** Claude Code CLI ou Cursor IDE (com assinatura Pro)
|
|
133
134
|
|
|
134
135
|
### Alternativa: Instalação Legacy (Sem NPM)
|
|
135
136
|
|
|
@@ -163,9 +164,6 @@ seu-projeto/
|
|
|
163
164
|
├── .claude/
|
|
164
165
|
│ └── settings.json # Configurações do Claude Code
|
|
165
166
|
│
|
|
166
|
-
├── .gemini/
|
|
167
|
-
│ └── settings.json # Configurações do Gemini
|
|
168
|
-
│
|
|
169
167
|
├── .task-flow/ # RBIN Task Flow
|
|
170
168
|
│ ├── tasks.input.txt # Definições de tarefas em texto simples (edite isso!)
|
|
171
169
|
│ ├── tasks.status.md # ⚠️ Status das tarefas (atualizado automaticamente, NÃO EDITE)
|
|
@@ -180,7 +178,6 @@ seu-projeto/
|
|
|
180
178
|
|
|
181
179
|
Nenhuma configuração adicional necessária! Apenas certifique-se de ter:
|
|
182
180
|
- Claude Code CLI instalado, OU
|
|
183
|
-
- Acesso à API Gemini configurado, OU
|
|
184
181
|
- Cursor IDE com assinatura Pro ativa
|
|
185
182
|
|
|
186
183
|
**Você está pronto!**
|
|
@@ -205,13 +202,6 @@ O Claude Code vem pré-configurado com:
|
|
|
205
202
|
- Integração com RBIN Task Flow
|
|
206
203
|
- Melhores práticas de desenvolvimento
|
|
207
204
|
|
|
208
|
-
### Integração com Gemini
|
|
209
|
-
|
|
210
|
-
O Gemini vem pré-configurado com:
|
|
211
|
-
- Configurações personalizadas
|
|
212
|
-
- Integração com RBIN Task Flow
|
|
213
|
-
- Melhores práticas de desenvolvimento
|
|
214
|
-
|
|
215
205
|
## O Que Está Configurado
|
|
216
206
|
|
|
217
207
|
### Regras de Desenvolvimento
|
|
@@ -239,11 +229,9 @@ O instalador adiciona estas entradas ao `.gitignore`:
|
|
|
239
229
|
|
|
240
230
|
```gitignore
|
|
241
231
|
.claude/
|
|
242
|
-
.gemini/
|
|
243
232
|
.cursor/
|
|
244
233
|
.task-flow/
|
|
245
234
|
CLAUDE.md
|
|
246
|
-
GEMINI.md
|
|
247
235
|
```
|
|
248
236
|
|
|
249
237
|
**Por que discreto?**
|
|
@@ -288,9 +276,6 @@ rbin-task-flow/
|
|
|
288
276
|
├── .claude/
|
|
289
277
|
│ └── settings.json # Configurações do Claude Code
|
|
290
278
|
│
|
|
291
|
-
├── .gemini/
|
|
292
|
-
│ └── settings.json # Configurações do Gemini
|
|
293
|
-
│
|
|
294
279
|
├── .task-flow/
|
|
295
280
|
│ ├── README.md # Referência rápida de comandos
|
|
296
281
|
│ ├── tasks.input.txt # Template de definições de tarefas
|
|
@@ -302,7 +287,6 @@ rbin-task-flow/
|
|
|
302
287
|
├── .gitignore # Template gitignore
|
|
303
288
|
├── .model-versions.json # Referência de versão do modelo (atualize quando novos modelos forem lançados)
|
|
304
289
|
├── CLAUDE.md # Instruções principais do Claude
|
|
305
|
-
├── GEMINI.md # Instruções principais do Gemini
|
|
306
290
|
├── install.sh # Script de instalação
|
|
307
291
|
└── README.md # Este arquivo
|
|
308
292
|
```
|
|
@@ -313,11 +297,11 @@ rbin-task-flow/
|
|
|
313
297
|
- ✅ Use RBIN Task Flow em **projetos que recebem** as configurações via instalação
|
|
314
298
|
- 🔄 O instalador **sempre sobrescreve** configurações existentes
|
|
315
299
|
- 🤫 As entradas do .gitignore são **discretas** (sem menções a IA)
|
|
316
|
-
- 🎯 Funciona com **Claude Code CLI
|
|
300
|
+
- 🎯 Funciona com **Claude Code CLI** ou **Cursor Pro**
|
|
317
301
|
- 📦 O diretório Task Flow (`.task-flow/`) é **automaticamente gitignored**
|
|
318
302
|
- 📝 Defina tarefas em `.task-flow/tasks.input.txt` usando formato simples: `- Descrição da tarefa`
|
|
319
303
|
- 🚀 **Instalação Global NPM**: `npm install -g rbin-task-flow`, depois use `rbin-task-flow init` em qualquer projeto
|
|
320
|
-
- 🔒 **Chaves de API podem ser necessárias** - depende do seu provedor de IA (Claude Code
|
|
304
|
+
- 🔒 **Chaves de API podem ser necessárias** - depende do seu provedor de IA (Claude Code ou Cursor Pro)
|
|
321
305
|
- 🔔 **Verificação de versão do modelo** - Use `rbin-task-flow version-check` para verificar versões mais recentes dos modelos (verificação rápida e local)
|
|
322
306
|
|
|
323
307
|
## Atualizando Versões dos Modelos
|
|
@@ -335,16 +319,11 @@ Quando novas versões de modelos forem lançadas, atualize `.model-versions.json
|
|
|
335
319
|
"current": "claude-sonnet-4-5-20250929",
|
|
336
320
|
"latest": "NOVA_VERSÃO_AQUI",
|
|
337
321
|
"checkUrl": "https://docs.cursor.com/models"
|
|
338
|
-
},
|
|
339
|
-
"gemini": {
|
|
340
|
-
"current": "gemini-3-flash",
|
|
341
|
-
"latest": "NOVA_VERSÃO_AQUI",
|
|
342
|
-
"checkUrl": "https://ai.google.dev/models/gemini"
|
|
343
322
|
}
|
|
344
323
|
}
|
|
345
324
|
```
|
|
346
325
|
|
|
347
|
-
O instalador verificará automaticamente versões mais recentes dos modelos e **perguntará individualmente** se você deseja atualizar cada um (Claude, Cursor
|
|
326
|
+
O instalador verificará automaticamente versões mais recentes dos modelos e **perguntará individualmente** se você deseja atualizar cada um (Claude, Cursor). Esta verificação é **rápida e local** - sem chamadas de API, sem solicitações de rede, apenas uma simples comparação de strings.
|
|
348
327
|
|
|
349
328
|
**Atualizações Interativas:** Quando uma versão mais recente estiver disponível, o instalador irá:
|
|
350
329
|
- Mostrar versões atuais e mais recentes
|
|
@@ -399,13 +378,13 @@ Para problemas ou perguntas:
|
|
|
399
378
|
|
|
400
379
|
## What Is This Project?
|
|
401
380
|
|
|
402
|
-
RBIN Task Flow is an AI-powered task management system that automatically configures Claude Code
|
|
381
|
+
RBIN Task Flow is an AI-powered task management system that automatically configures Claude Code and Cursor IDE in any project. You define tasks in plain text and the AI automatically generates detailed, actionable subtasks.
|
|
403
382
|
|
|
404
383
|
**Key benefits:**
|
|
405
384
|
- ✅ Global NPM installation - install once, use in any project
|
|
406
385
|
- ✅ Zero configuration - ready to use immediately
|
|
407
386
|
- ✅ Simple management - write tasks in text, AI does the rest
|
|
408
|
-
- ✅ Multiple AI models - Claude
|
|
387
|
+
- ✅ Multiple AI models - Claude and Cursor configured
|
|
409
388
|
|
|
410
389
|
## Installation
|
|
411
390
|
|
|
@@ -423,7 +402,7 @@ rbin-task-flow init
|
|
|
423
402
|
# Edit .task-flow/tasks.input.txt and use:
|
|
424
403
|
# - task-flow: sync
|
|
425
404
|
# - task-flow: run next X
|
|
426
|
-
# - task-flow: run task X
|
|
405
|
+
# - task-flow: run X (or task-flow: run X,Y or task-flow: run all)
|
|
427
406
|
```
|
|
428
407
|
|
|
429
408
|
**That's it!** RBIN Task Flow is now available globally on your system.
|
|
@@ -437,25 +416,27 @@ rbin-task-flow init # Initialize in current project
|
|
|
437
416
|
rbin-task-flow update # Update configurations
|
|
438
417
|
rbin-task-flow version-check # Check for model updates
|
|
439
418
|
rbin-task-flow info # Show information
|
|
440
|
-
rbin-task-flow estimate <
|
|
441
|
-
rbin-task-flow report <
|
|
419
|
+
rbin-task-flow estimate <ids> # Estimate time (e.g., "1" or "1,2" or "all")
|
|
420
|
+
rbin-task-flow report <ids> # Generate report (e.g., "1" or "1,2" or "all")
|
|
442
421
|
```
|
|
443
422
|
|
|
444
423
|
### AI Commands - Why Use Them?
|
|
445
424
|
|
|
446
|
-
After initializing, use these commands in your AI (Cursor/Claude
|
|
425
|
+
After initializing, use these commands in your AI (Cursor/Claude) to automatically manage tasks:
|
|
447
426
|
|
|
448
427
|
| Command | Why Use It | Key Feature |
|
|
449
428
|
|---------|------------|-------------|
|
|
450
429
|
| `task-flow: sync` | **Sync** tasks from text file with system | Keeps everything synchronized automatically - adds new, removes deleted, preserves your progress |
|
|
451
430
|
| `task-flow: think` | **Discover** tasks you forgot | Analyzes code and suggests missing tasks (tests, refactoring, documentation) |
|
|
452
|
-
| `task-flow: run next X` | **Automate** work on next subtasks | AI works on next X subtasks sequentially, you just follow along |
|
|
453
|
-
| `task-flow: run task X` | **Complete** an entire task at once | Executes all subtasks of a specific task (allows parallel work) |
|
|
454
431
|
| `task-flow: status` | **Visualize** progress quickly | See summary with completed tasks, in progress, and remaining subtasks |
|
|
455
|
-
| `task-flow:
|
|
456
|
-
| `task-flow:
|
|
457
|
-
| `task-flow:
|
|
458
|
-
| `task-flow:
|
|
432
|
+
| `task-flow: run next X` | **Automate** work on next subtasks | AI works on next X subtasks sequentially, you just follow along |
|
|
433
|
+
| `task-flow: run X` | **Complete** an entire task at once | Executes all subtasks of a specific task (allows parallel work) |
|
|
434
|
+
| `task-flow: run X,Y` | **Complete** multiple tasks | Executes comma-separated tasks (e.g., `task-flow: run 10,11`) |
|
|
435
|
+
| `task-flow: run all` | **Complete** all tasks | Executes all pending tasks |
|
|
436
|
+
| `task-flow: review X` | **Ensure** work quality | Verifies specific tasks (e.g., `task-flow: review 1` or `task-flow: review 10,11` or `task-flow: review all`) |
|
|
437
|
+
| `task-flow: refactor X` | **Improve** code without breaking | Refactors specific tasks (e.g., `task-flow: refactor 1` or `task-flow: refactor 10,11` or `task-flow: refactor all`) |
|
|
438
|
+
| `task-flow: estimate X` | **Estimate** time for management | Calculates time estimate (e.g., `task-flow: estimate 1` or `task-flow: estimate 10,11`) |
|
|
439
|
+
| `task-flow: report X` | **Document** implementation | Generates detailed report (e.g., `task-flow: report 1` or `task-flow: report 10,11`) |
|
|
459
440
|
|
|
460
441
|
**Typical workflow:**
|
|
461
442
|
|
|
@@ -477,13 +458,13 @@ cd my-project && rbin-task-flow init
|
|
|
477
458
|
|
|
478
459
|
## Overview
|
|
479
460
|
|
|
480
|
-
A centralized repository of development configurations and rules that can be instantly installed in any project. Provides complete setup for Claude Code,
|
|
461
|
+
A centralized repository of development configurations and rules that can be instantly installed in any project. Provides complete setup for Claude Code, Cursor IDE, and RBIN Task Flow - a simple AI-powered task management system.
|
|
481
462
|
|
|
482
463
|
### Key Features
|
|
483
464
|
|
|
484
465
|
- **NPM Global Installation** - Install once, use everywhere with `npm install -g rbin-task-flow`
|
|
485
466
|
- **Simple Task Management** - Define tasks in plain text, AI generates detailed subtasks
|
|
486
|
-
- **Multiple AI Models** - Claude Code Sonnet
|
|
467
|
+
- **Multiple AI Models** - Claude Code Sonnet configured and ready to use
|
|
487
468
|
- **Discrete .gitignore** - AI configs hidden with generic comments
|
|
488
469
|
- **Zero Configuration** - Ready to use immediately
|
|
489
470
|
- **RBIN Task Flow** - AI-powered task management with simple text interface
|
|
@@ -492,7 +473,7 @@ A centralized repository of development configurations and rules that can be ins
|
|
|
492
473
|
|
|
493
474
|
- **Operating System:** macOS, Linux, or Windows (WSL)
|
|
494
475
|
- **Tools:** Git, Bash, Node.js
|
|
495
|
-
- **Required:** Claude Code CLI
|
|
476
|
+
- **Required:** Claude Code CLI or Cursor IDE (with Pro subscription)
|
|
496
477
|
|
|
497
478
|
### Alternative: Legacy Installation (Without NPM)
|
|
498
479
|
|
|
@@ -526,9 +507,6 @@ your-project/
|
|
|
526
507
|
├── .claude/
|
|
527
508
|
│ └── settings.json # Claude Code settings
|
|
528
509
|
│
|
|
529
|
-
├── .gemini/
|
|
530
|
-
│ └── settings.json # Gemini settings
|
|
531
|
-
│
|
|
532
510
|
├── .task-flow/ # RBIN Task Flow
|
|
533
511
|
│ ├── tasks.input.txt # Plain text task definitions (edit this!)
|
|
534
512
|
│ ├── tasks.status.md # ⚠️ Task status (auto-updated, DO NOT EDIT)
|
|
@@ -543,7 +521,6 @@ your-project/
|
|
|
543
521
|
|
|
544
522
|
No additional configuration required! Just make sure you have:
|
|
545
523
|
- Claude Code CLI installed, OR
|
|
546
|
-
- Gemini API access configured, OR
|
|
547
524
|
- Cursor IDE with an active Pro subscription
|
|
548
525
|
|
|
549
526
|
**You're ready!**
|
|
@@ -568,13 +545,6 @@ Claude Code is pre-configured with:
|
|
|
568
545
|
- RBIN Task Flow integration
|
|
569
546
|
- Development best practices
|
|
570
547
|
|
|
571
|
-
### Gemini Integration
|
|
572
|
-
|
|
573
|
-
Gemini is pre-configured with:
|
|
574
|
-
- Custom settings
|
|
575
|
-
- RBIN Task Flow integration
|
|
576
|
-
- Development best practices
|
|
577
|
-
|
|
578
548
|
## What's Configured
|
|
579
549
|
|
|
580
550
|
### Development Rules
|
|
@@ -602,11 +572,9 @@ The installer adds these entries to `.gitignore`:
|
|
|
602
572
|
|
|
603
573
|
```gitignore
|
|
604
574
|
.claude/
|
|
605
|
-
.gemini/
|
|
606
575
|
.cursor/
|
|
607
576
|
.task-flow/
|
|
608
577
|
CLAUDE.md
|
|
609
|
-
GEMINI.md
|
|
610
578
|
```
|
|
611
579
|
|
|
612
580
|
**Why discrete?**
|
|
@@ -651,9 +619,6 @@ rbin-task-flow/
|
|
|
651
619
|
├── .claude/
|
|
652
620
|
│ └── settings.json # Claude Code settings
|
|
653
621
|
│
|
|
654
|
-
├── .gemini/
|
|
655
|
-
│ └── settings.json # Gemini settings
|
|
656
|
-
│
|
|
657
622
|
├── .task-flow/
|
|
658
623
|
│ ├── README.md # Quick commands reference
|
|
659
624
|
│ ├── tasks.input.txt # Task definitions template
|
|
@@ -665,7 +630,6 @@ rbin-task-flow/
|
|
|
665
630
|
├── .gitignore # Template gitignore
|
|
666
631
|
├── .model-versions.json # Model version reference (update when new models are released)
|
|
667
632
|
├── CLAUDE.md # Main Claude instructions
|
|
668
|
-
├── GEMINI.md # Main Gemini instructions
|
|
669
633
|
├── install.sh # Installation script
|
|
670
634
|
└── README.md # This file
|
|
671
635
|
```
|
|
@@ -676,11 +640,11 @@ rbin-task-flow/
|
|
|
676
640
|
- ✅ Use RBIN Task Flow in **projects that receive** the configs via installation
|
|
677
641
|
- 🔄 Installer **always overwrites** existing configs
|
|
678
642
|
- 🤫 .gitignore entries are **discrete** (no AI mentions)
|
|
679
|
-
- 🎯 Works with **Claude Code CLI
|
|
643
|
+
- 🎯 Works with **Claude Code CLI** or **Cursor Pro**
|
|
680
644
|
- 📦 Task Flow directory (`.task-flow/`) is **automatically gitignored**
|
|
681
645
|
- 📝 Define tasks in `.task-flow/tasks.input.txt` using simple format: `- Task description`
|
|
682
646
|
- 🚀 **NPM Global Install**: `npm install -g rbin-task-flow`, then use `rbin-task-flow init` in any project
|
|
683
|
-
- 🔒 **API keys may be required** - depends on your AI provider (Claude Code
|
|
647
|
+
- 🔒 **API keys may be required** - depends on your AI provider (Claude Code or Cursor Pro)
|
|
684
648
|
- 🔔 **Model version checking** - Use `rbin-task-flow version-check` to check for newer model versions (fast, local check)
|
|
685
649
|
|
|
686
650
|
## Updating Model Versions
|
|
@@ -698,16 +662,11 @@ When new model versions are released, update `.model-versions.json` in this repo
|
|
|
698
662
|
"current": "claude-sonnet-4-5-20250929",
|
|
699
663
|
"latest": "NEW_VERSION_HERE",
|
|
700
664
|
"checkUrl": "https://docs.cursor.com/models"
|
|
701
|
-
},
|
|
702
|
-
"gemini": {
|
|
703
|
-
"current": "gemini-3-flash",
|
|
704
|
-
"latest": "NEW_VERSION_HERE",
|
|
705
|
-
"checkUrl": "https://ai.google.dev/models/gemini"
|
|
706
665
|
}
|
|
707
666
|
}
|
|
708
667
|
```
|
|
709
668
|
|
|
710
|
-
The installer will automatically check for newer model versions and **ask you individually** if you want to update each one (Claude, Cursor
|
|
669
|
+
The installer will automatically check for newer model versions and **ask you individually** if you want to update each one (Claude, Cursor). This check is **fast and local** - no API calls, no network requests, just a simple string comparison.
|
|
711
670
|
|
|
712
671
|
**Interactive Updates:** When a newer version is available, the installer will:
|
|
713
672
|
- Show current and latest versions
|
package/bin/cli.js
CHANGED
|
@@ -10,7 +10,7 @@ const chalk = require('chalk');
|
|
|
10
10
|
|
|
11
11
|
program
|
|
12
12
|
.name('rbin-task-flow')
|
|
13
|
-
.description('AI-powered task management for Claude
|
|
13
|
+
.description('AI-powered task management for Claude and Cursor')
|
|
14
14
|
.version(require('../package.json').version);
|
|
15
15
|
|
|
16
16
|
program
|
|
@@ -40,22 +40,22 @@ program
|
|
|
40
40
|
|
|
41
41
|
program
|
|
42
42
|
.command('estimate')
|
|
43
|
-
.description('Estimate time for
|
|
44
|
-
.argument('<
|
|
43
|
+
.description('Estimate time for task(s) based on subtasks and experience level')
|
|
44
|
+
.argument('<taskIds>', 'Task ID(s) to estimate (comma-separated or "all")')
|
|
45
45
|
.option('-p, --path <path>', 'Target directory (default: current directory)')
|
|
46
|
-
.action(async (
|
|
46
|
+
.action(async (taskIds, options) => {
|
|
47
47
|
const targetPath = options.path || process.cwd();
|
|
48
|
-
await estimateTask(
|
|
48
|
+
await estimateTask(taskIds, targetPath);
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
program
|
|
52
52
|
.command('report')
|
|
53
|
-
.description('Generate implementation report for
|
|
54
|
-
.argument('<
|
|
53
|
+
.description('Generate implementation report for completed task(s)')
|
|
54
|
+
.argument('<taskIds>', 'Task ID(s) to generate report for (comma-separated or "all")')
|
|
55
55
|
.option('-p, --path <path>', 'Target directory (default: current directory)')
|
|
56
|
-
.action(async (
|
|
56
|
+
.action(async (taskIds, options) => {
|
|
57
57
|
const targetPath = options.path || process.cwd();
|
|
58
|
-
await generateReport(
|
|
58
|
+
await generateReport(taskIds, targetPath);
|
|
59
59
|
});
|
|
60
60
|
|
|
61
61
|
program
|
|
@@ -65,15 +65,15 @@ program
|
|
|
65
65
|
console.log('\n' + chalk.cyan('╔════════════════════════════════════════════════════════════════╗'));
|
|
66
66
|
console.log(chalk.cyan('║') + ' ' + chalk.magenta('✨ RBIN Task Flow ✨') + ' ' + chalk.cyan('║'));
|
|
67
67
|
console.log(chalk.cyan('╚════════════════════════════════════════════════════════════════╝') + '\n');
|
|
68
|
-
console.log(chalk.blue('AI-powered task management for Claude
|
|
68
|
+
console.log(chalk.blue('AI-powered task management for Claude and Cursor'));
|
|
69
69
|
console.log(chalk.yellow('\nVersion:'), require('../package.json').version);
|
|
70
70
|
console.log(chalk.yellow('Repository:'), 'https://github.com/rbinoliveira/rbin-task-flow');
|
|
71
71
|
console.log(chalk.yellow('\nCommands:'));
|
|
72
72
|
console.log(chalk.cyan(' rbin-task-flow init') + ' - Initialize in current directory');
|
|
73
73
|
console.log(chalk.cyan(' rbin-task-flow update') + ' - Update configurations');
|
|
74
74
|
console.log(chalk.cyan(' rbin-task-flow version-check') + ' - Check for model updates');
|
|
75
|
-
console.log(chalk.cyan(' rbin-task-flow estimate <
|
|
76
|
-
console.log(chalk.cyan(' rbin-task-flow report <
|
|
75
|
+
console.log(chalk.cyan(' rbin-task-flow estimate <ids>') + ' - Estimate time (e.g., "1" or "1,2" or "all")');
|
|
76
|
+
console.log(chalk.cyan(' rbin-task-flow report <ids>') + ' - Generate report (e.g., "1" or "1,2" or "all")');
|
|
77
77
|
console.log(chalk.cyan(' rbin-task-flow info') + ' - Show this information\n');
|
|
78
78
|
});
|
|
79
79
|
|
package/lib/estimate.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
const fs = require('fs-extra');
|
|
2
2
|
const path = require('path');
|
|
3
3
|
const chalk = require('chalk');
|
|
4
|
+
const { parseTaskIds } = require('./utils');
|
|
4
5
|
|
|
5
|
-
async function estimateTask(
|
|
6
|
+
async function estimateTask(taskIdsInput, targetPath = process.cwd()) {
|
|
6
7
|
const tasksPath = path.join(targetPath, '.task-flow/.internal/tasks.json');
|
|
7
8
|
|
|
8
9
|
if (!fs.existsSync(tasksPath)) {
|
|
@@ -12,57 +13,81 @@ async function estimateTask(taskId, targetPath = process.cwd()) {
|
|
|
12
13
|
|
|
13
14
|
try {
|
|
14
15
|
const tasksData = await fs.readJSON(tasksPath);
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
if (
|
|
18
|
-
console.log(chalk.red(
|
|
16
|
+
const taskIds = parseTaskIds(taskIdsInput, tasksData.tasks);
|
|
17
|
+
|
|
18
|
+
if (taskIds.length === 0) {
|
|
19
|
+
console.log(chalk.red('❌ No valid task IDs provided.'));
|
|
19
20
|
return;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
let successCount = 0;
|
|
24
|
+
let errorCount = 0;
|
|
25
|
+
|
|
26
|
+
for (const taskId of taskIds) {
|
|
27
|
+
const task = tasksData.tasks.find(t => t.id === taskId);
|
|
28
|
+
|
|
29
|
+
if (!task) {
|
|
30
|
+
console.log(chalk.red(`❌ Task ${taskId} not found.`));
|
|
31
|
+
errorCount++;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const subtaskCount = task.subtasks ? task.subtasks.length : 0;
|
|
36
|
+
|
|
37
|
+
if (subtaskCount === 0) {
|
|
38
|
+
console.log(chalk.yellow(`⚠️ Task ${taskId} has no subtasks. Cannot estimate.`));
|
|
39
|
+
errorCount++;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const estimates = calculateEstimates(subtaskCount);
|
|
44
|
+
|
|
45
|
+
if (taskIds.length > 1) {
|
|
46
|
+
console.log('\n' + chalk.cyan('═'.repeat(70)));
|
|
47
|
+
} else {
|
|
48
|
+
console.log('\n' + chalk.cyan('═'.repeat(70)));
|
|
49
|
+
}
|
|
50
|
+
console.log(chalk.magenta('📊 Task Estimation Report'));
|
|
51
|
+
console.log(chalk.cyan('═'.repeat(70)) + '\n');
|
|
52
|
+
|
|
53
|
+
console.log(chalk.blue.bold('Task:'), chalk.yellow(`#${taskId} - ${task.title}\n`));
|
|
54
|
+
console.log(chalk.blue(`Complexity: ${chalk.yellow(subtaskCount)} subtasks\n`));
|
|
55
|
+
|
|
56
|
+
console.log(chalk.cyan('─'.repeat(70)));
|
|
57
|
+
console.log(chalk.magenta.bold('Time Estimates by Experience Level:\n'));
|
|
58
|
+
|
|
59
|
+
const juniorDays = Math.ceil(estimates.junior.upper / 8);
|
|
60
|
+
const midDays = Math.ceil(estimates.mid.upper / 8);
|
|
61
|
+
const seniorDays = Math.ceil(estimates.senior.upper / 8);
|
|
62
|
+
|
|
63
|
+
console.log(chalk.gray('👶 Junior Developer (0-2 years):'));
|
|
64
|
+
console.log(chalk.white(' Hours:'), chalk.yellow(`${estimates.junior.lower}-${estimates.junior.upper} hours`));
|
|
65
|
+
console.log(chalk.white(' Days: '), chalk.yellow(`~${juniorDays} business day(s)`));
|
|
66
|
+
console.log('');
|
|
67
|
+
|
|
68
|
+
console.log(chalk.gray('👨💼 Mid-level Developer (3-5 years):'));
|
|
69
|
+
console.log(chalk.white(' Hours:'), chalk.yellow(`${estimates.mid.lower}-${estimates.mid.upper} hours`));
|
|
70
|
+
console.log(chalk.white(' Days: '), chalk.yellow(`~${midDays} business day(s)`));
|
|
71
|
+
console.log('');
|
|
72
|
+
|
|
73
|
+
console.log(chalk.gray('👴 Senior Developer (6+ years):'));
|
|
74
|
+
console.log(chalk.white(' Hours:'), chalk.yellow(`${estimates.senior.lower}-${estimates.senior.upper} hours`));
|
|
75
|
+
console.log(chalk.white(' Days: '), chalk.yellow(`~${seniorDays} business day(s)`));
|
|
76
|
+
console.log('');
|
|
77
|
+
|
|
78
|
+
console.log(chalk.cyan('─'.repeat(70)));
|
|
79
|
+
console.log(chalk.magenta.bold('Recommendation for Management:\n'));
|
|
80
|
+
console.log(chalk.white(' Recommended estimate:'), chalk.yellow(`${estimates.mid.lower}-${estimates.mid.upper} hours`), chalk.gray('(mid-level baseline)'));
|
|
81
|
+
console.log(chalk.white(' Buffer recommended:'), chalk.yellow(`+20%`), chalk.gray('for unexpected issues'));
|
|
82
|
+
console.log(chalk.white(' Total estimate:'), chalk.yellow(`${Math.round(estimates.mid.upper * 1.2)} hours`), chalk.gray(`(~${Math.ceil(estimates.mid.upper * 1.2 / 8)} business days)`));
|
|
83
|
+
console.log('');
|
|
84
|
+
|
|
85
|
+
successCount++;
|
|
27
86
|
}
|
|
28
87
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
console.log(chalk.magenta('📊 Task Estimation Report'));
|
|
33
|
-
console.log(chalk.cyan('═'.repeat(70)) + '\n');
|
|
34
|
-
|
|
35
|
-
console.log(chalk.blue.bold('Task:'), chalk.yellow(`#${taskId} - ${task.title}\n`));
|
|
36
|
-
console.log(chalk.blue(`Complexity: ${chalk.yellow(subtaskCount)} subtasks\n`));
|
|
37
|
-
|
|
38
|
-
console.log(chalk.cyan('─'.repeat(70)));
|
|
39
|
-
console.log(chalk.magenta.bold('Time Estimates by Experience Level:\n'));
|
|
40
|
-
|
|
41
|
-
const juniorDays = Math.ceil(estimates.junior.upper / 8);
|
|
42
|
-
const midDays = Math.ceil(estimates.mid.upper / 8);
|
|
43
|
-
const seniorDays = Math.ceil(estimates.senior.upper / 8);
|
|
44
|
-
|
|
45
|
-
console.log(chalk.gray('👶 Junior Developer (0-2 years):'));
|
|
46
|
-
console.log(chalk.white(' Hours:'), chalk.yellow(`${estimates.junior.lower}-${estimates.junior.upper} hours`));
|
|
47
|
-
console.log(chalk.white(' Days: '), chalk.yellow(`~${juniorDays} business day(s)`));
|
|
48
|
-
console.log('');
|
|
49
|
-
|
|
50
|
-
console.log(chalk.gray('👨💼 Mid-level Developer (3-5 years):'));
|
|
51
|
-
console.log(chalk.white(' Hours:'), chalk.yellow(`${estimates.mid.lower}-${estimates.mid.upper} hours`));
|
|
52
|
-
console.log(chalk.white(' Days: '), chalk.yellow(`~${midDays} business day(s)`));
|
|
53
|
-
console.log('');
|
|
54
|
-
|
|
55
|
-
console.log(chalk.gray('👴 Senior Developer (6+ years):'));
|
|
56
|
-
console.log(chalk.white(' Hours:'), chalk.yellow(`${estimates.senior.lower}-${estimates.senior.upper} hours`));
|
|
57
|
-
console.log(chalk.white(' Days: '), chalk.yellow(`~${seniorDays} business day(s)`));
|
|
58
|
-
console.log('');
|
|
59
|
-
|
|
60
|
-
console.log(chalk.cyan('─'.repeat(70)));
|
|
61
|
-
console.log(chalk.magenta.bold('Recommendation for Management:\n'));
|
|
62
|
-
console.log(chalk.white(' Recommended estimate:'), chalk.yellow(`${estimates.mid.lower}-${estimates.mid.upper} hours`), chalk.gray('(mid-level baseline)'));
|
|
63
|
-
console.log(chalk.white(' Buffer recommended:'), chalk.yellow(`+20%`), chalk.gray('for unexpected issues'));
|
|
64
|
-
console.log(chalk.white(' Total estimate:'), chalk.yellow(`${Math.round(estimates.mid.upper * 1.2)} hours`), chalk.gray(`(~${Math.ceil(estimates.mid.upper * 1.2 / 8)} business days)`));
|
|
65
|
-
console.log('');
|
|
88
|
+
if (taskIds.length > 1) {
|
|
89
|
+
console.log(chalk.cyan(`\n📊 Estimated ${successCount} task(s), ${errorCount} error(s)`));
|
|
90
|
+
}
|
|
66
91
|
|
|
67
92
|
} catch (error) {
|
|
68
93
|
console.error(chalk.red('Error reading tasks:'), error.message);
|