rbin-task-flow 1.25.1 → 1.26.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.
Files changed (45) hide show
  1. package/.claude/skills/rbin-coding-standards/SKILL.md +1 -1
  2. package/.claude/skills/task-flow-estimate/SKILL.md +8 -5
  3. package/.claude/skills/task-flow-from-contexts/SKILL.md +16 -0
  4. package/.claude/skills/task-flow-run/SKILL.md +1 -1
  5. package/.claude/skills/task-flow-sync/SKILL.md +0 -1
  6. package/.claude/skills/task-flow-sync/workflow.md +1 -1
  7. package/.claude/skills/task-flow-validate/SKILL.md +2 -2
  8. package/.cursor/rules/graphify-task-flow.mdc +7 -8
  9. package/.cursor/rules/task-flow-cursor.mdc +3 -8
  10. package/.cursor/rules/task-flow-sync.mdc +1 -1
  11. package/.cursor/rules/task_execution.mdc +2 -7
  12. package/.cursor/rules/task_from_contexts.mdc +93 -0
  13. package/.cursor/rules/task_validate.mdc +1 -7
  14. package/.cursor/rules/task_work.mdc +1 -1
  15. package/.task-flow/README.md +70 -53
  16. package/.task-flow/guides/AI-PLATFORMS.md +6 -7
  17. package/.task-flow/guides/CODEX.md +16 -63
  18. package/.task-flow/guides/CURSOR.md +4 -5
  19. package/.task-flow/guides/GRAPHIFY.md +12 -13
  20. package/.task-flow/guides/platforms/claude-code.md +13 -23
  21. package/.task-flow/guides/platforms/codex.md +9 -22
  22. package/.task-flow/guides/platforms/cursor.md +14 -35
  23. package/.task-flow/tasks.input.txt +3 -4
  24. package/AGENTS.md +3 -13
  25. package/CLAUDE.md +3 -8
  26. package/README.md +14 -22
  27. package/bin/cli.js +3 -24
  28. package/lib/gitignore.js +0 -2
  29. package/lib/graphify.js +50 -18
  30. package/lib/install.js +1 -14
  31. package/package.json +1 -2
  32. package/.claude/skills/task-flow-check/SKILL.md +0 -15
  33. package/.claude/skills/task-flow-generate-flow/SKILL.md +0 -15
  34. package/.claude/skills/task-flow-improve-changes/SKILL.md +0 -15
  35. package/.claude/skills/task-flow-refactor/SKILL.md +0 -14
  36. package/.claude/skills/task-flow-review/SKILL.md +0 -14
  37. package/.claude/skills/task-flow-think/SKILL.md +0 -19
  38. package/.cursor/rules/task_analysis.mdc +0 -45
  39. package/.cursor/rules/task_check.mdc +0 -37
  40. package/.cursor/rules/task_generate_flow.mdc +0 -90
  41. package/.cursor/rules/task_improve_changes.mdc +0 -50
  42. package/.cursor/rules/task_refactor.mdc +0 -94
  43. package/.cursor/rules/task_review.mdc +0 -88
  44. package/lib/audit.js +0 -44
  45. package/lib/check.js +0 -113
package/AGENTS.md CHANGED
@@ -29,18 +29,13 @@ No explanatory comments. Complex topics → `dev-logs/*.md`. Allowed: `// ──
29
29
  | Command | Read first |
30
30
  |---------|------------|
31
31
  | `task-flow: sync` | Section **Sync** below; details `.task-flow/guides/CODEX.md` |
32
+ | `task-flow: from contexts` | `.cursor/rules/task_from_contexts.mdc` · then `sync` |
32
33
  | `task-flow: run …` | Section **Run** below; details `.task-flow/guides/CODEX.md` |
33
34
  | `task-flow: status` | `.task-flow/tasks.status.md` |
34
- | `task-flow: think` | `.task-flow/guides/CODEX.md` · optional codebase scan |
35
- | `task-flow: check` | `.cursor/rules/task_check.mdc` · `package.json` |
36
- | `task-flow: improve changes` | `git diff --name-only HEAD` · `.cursor/rules/task_improve_changes.mdc` |
37
35
  | `task-flow: audit` | `.cursor/rules/task_audit.mdc` · checklist `coding_standards.mdc` (full: `.task-flow/guides/coding-standards-full.md` if needed) |
38
- | `task-flow: review X` | `.task-flow/guides/CODEX.md` |
39
36
  | `task-flow: validate` | `.cursor/rules/task_validate.mdc` · then sync |
40
- | `task-flow: refactor X` | `.cursor/rules/task_refactor.mdc` |
41
- | `task-flow: estimate X` | `.task-flow/guides/CODEX.md` |
37
+ | `task-flow: estimate X` / `X,Y` / `all` | `.cursor/rules/task_estimate.mdc` · `.task-flow/guides/CODEX.md` |
42
38
  | `task-flow: report X` | `.task-flow/guides/CODEX.md` |
43
- | `task-flow: generate flow` | `.cursor/rules/task_generate_flow.mdc` |
44
39
  | Implementing code | Checklist `.cursor/rules/coding_standards.mdc` · depth: `.task-flow/guides/coding-standards-full.md` (sections only) |
45
40
 
46
41
  ## Sync (embedded)
@@ -52,7 +47,6 @@ No explanatory comments. Complex topics → `dev-logs/*.md`. Allowed: `// ──
52
47
  5. **Modified:** regen subtasks, **preserve** done/pending where possible.
53
48
  6. List `.task-flow/contexts/`; match to tasks; honor `task-flow-screen file.ext`.
54
49
  7. `status.json` = truth; sync `tasks.status.md` checkboxes + 📊 Summary.
55
- 8. Do not fill `tasks.flow.md` (only `generate flow`).
56
50
 
57
51
  ## Run (embedded)
58
52
 
@@ -60,7 +54,7 @@ No explanatory comments. Complex topics → `dev-logs/*.md`. Allowed: `// ──
60
54
  2. `run next X` (default X=1): next X **pending** subtasks in order 1.1, 1.2, …, 2.1…
61
55
  3. `run X` / `X,Y` / `all`: all pending for task(s); for `run X`, block if tasks `1..X-1` have any pending subtask.
62
56
  4. Per subtask: follow `instructions`; read `contexts/` if cited; implement + verify.
63
- 5. If `graphify-out/graph.json` exists, prefer `graphify query` before repo-wide grep.
57
+ 5. If `.task-flow/guides/graphify-out/graph.json` exists, prefer `graphify query … --graph .task-flow/guides/graphify-out/graph.json` before repo-wide grep.
64
58
  6. Mark subtask `done` in `status.json`; update `tasks.status.md` Summary.
65
59
  7. Parent task `done` when all subtasks done. Suggest commit; never git write.
66
60
 
@@ -74,10 +68,6 @@ Leia AGENTS.md. Execute task-flow: sync.
74
68
  Leia AGENTS.md e .task-flow/guides/CODEX.md (Run). task-flow: run next 3.
75
69
  ```
76
70
 
77
- ```
78
- task-flow: improve changes — git diff --name-only HEAD, audite só esses arquivos.
79
- ```
80
-
81
71
  ## Other platforms
82
72
 
83
73
  Claude: `CLAUDE.md` + `.claude/skills/`. Cursor: `.cursor/rules/`. Index: `.task-flow/guides/AI-PLATFORMS.md`.
package/CLAUDE.md CHANGED
@@ -14,18 +14,13 @@
14
14
  | Action | Skill |
15
15
  |--------|--------|
16
16
  | Sync input → system | `/task-flow-sync` |
17
+ | Draft tasks from `contexts/` | `/task-flow-from-contexts` |
17
18
  | Run subtasks | `/task-flow-run` |
18
19
  | Status | `/task-flow-status` |
19
- | Suggest new tasks | `/task-flow-think` |
20
- | Lint + build | `/task-flow-check` |
21
20
  | Audit repo | `/task-flow-audit` |
22
- | Audit diff only | `/task-flow-improve-changes` |
23
- | Verify done | `/task-flow-review` |
24
21
  | Validate + fill gaps | `/task-flow-validate` |
25
- | Refactor task code | `/task-flow-refactor` |
26
- | Estimate hours | `/task-flow-estimate` |
22
+ | Estimate hours (`X`, `X,Y`, `all`) | `/task-flow-estimate` |
27
23
  | Implementation report | `/task-flow-report` |
28
- | tasks.flow.md | `/task-flow-generate-flow` |
29
24
  | Implement code | `/rbin-coding-standards` (invoke explicitly; checklist first, full doc sections only if needed) |
30
25
  | Commit suggestion | `/rbin-git` |
31
26
 
@@ -43,7 +38,7 @@ Natural language `task-flow: …` works the same. Details: [.task-flow/README.md
43
38
 
44
39
  ## Graphify (optional)
45
40
 
46
- During `/task-flow-run`, if `graphify-out/` exists, use `graphify query` before broad search. See [.task-flow/guides/GRAPHIFY.md](.task-flow/guides/GRAPHIFY.md).
41
+ During `/task-flow-run`, if `.task-flow/guides/graphify-out/` exists, use `graphify query` with `--graph .task-flow/guides/graphify-out/graph.json` before broad search. See [.task-flow/guides/GRAPHIFY.md](.task-flow/guides/GRAPHIFY.md).
47
42
 
48
43
  ## Cursor rules (reference)
49
44
 
package/README.md CHANGED
@@ -77,10 +77,10 @@ rbin-task-flow init --share-ai-config # Versiona .cursor/skills/ e .cursor/rule
77
77
  rbin-task-flow update # Atualiza configurações (mantém profile em install-meta.json)
78
78
  rbin-task-flow update --profile standard # Passa a copiar todas as regras .mdc
79
79
  rbin-task-flow reset # Reinstala o Task Flow do zero
80
- rbin-task-flow reset --graphify # Reset + graphify extract --backend claude-cli (CLI Graphify no PATH)
80
+ rbin-task-flow update --graphify # Update + grafo em .task-flow/guides/graphify-out/
81
+ rbin-task-flow reset --graphify # Reset + graphify extract (CLI Graphify no PATH)
81
82
  rbin-task-flow version-check # Verifica atualizações de modelos
82
83
  rbin-task-flow info # Mostra informações
83
- rbin-task-flow check # Roda lint/fix e build quando existirem
84
84
  rbin-task-flow estimate <ids> # Estima tempo (ex: "1" ou "1,2" ou "all")
85
85
  rbin-task-flow report <ids> # Gera relatório (ex: "1" ou "1,2" ou "all")
86
86
  ```
@@ -91,34 +91,30 @@ Após inicializar, use estes comandos na IA (Cursor/Claude/Codex) para gerenciar
91
91
 
92
92
  **Otimizar por plataforma:** [.task-flow/guides/AI-PLATFORMS.md](.task-flow/guides/AI-PLATFORMS.md) · [Claude](.task-flow/guides/platforms/claude-code.md) · [Cursor](.task-flow/guides/platforms/cursor.md) · [Codex](.task-flow/guides/platforms/codex.md) · [Graphify](.task-flow/guides/GRAPHIFY.md)
93
93
 
94
- **Graphify (opcional):** `rbin-task-flow init --graphify` configura coexistência e roda `graphify extract . --backend claude-cli` (CLI via `rbin-install-dev`; usa assinatura Claude Code).
94
+ **Graphify (opcional):** grafo em `.task-flow/guides/graphify-out/`. Novo projeto: `rbin-task-flow init --graphify`. **Já tem Task Flow:** `npm install -g rbin-task-flow@latest` e `rbin-task-flow update --graphify` no projeto (migra `graphify-out/` da raiz + regera grafo). Detalhes: [.task-flow/README.md](.task-flow/README.md#graphify-opcional) · [GRAPHIFY.md](.task-flow/guides/GRAPHIFY.md).
95
95
 
96
- **Claude Code / Cursor skills (v1.20+):** `init` copia 15 skills para `.claude/skills/` e `.cursor/skills/` — use `/task-flow-sync`, `/task-flow-run`, `/task-flow-validate`, etc.
96
+ **Claude Code / Cursor skills (v1.20+):** `init` copia 10 skills para `.claude/skills/` e `.cursor/skills/` — use `/task-flow-from-contexts`, `/task-flow-sync`, `/task-flow-run`, etc.
97
97
 
98
98
  **Codex (v1.21+):** `AGENTS.md` com sync/run embutidos, `.task-flow/guides/CODEX.md` sob demanda, `.codex/config.toml` (64 KiB).
99
99
 
100
100
  **Cursor (v1.23+):** `task-flow-cursor.mdc` + `rbin-git-policy.mdc` (2 always-on) + skills — ver `.task-flow/guides/CURSOR.md`.
101
101
 
102
- **Perfil minimal:** `init --profile minimal` instala só as 2 regras always-on e as 15 skills; workflows via `@task-flow-*` (sem `task_work`, `coding_standards` glob, etc.). `standard` (padrão) copia todas as regras `.cursor/rules/`.
102
+ **Perfil minimal:** `init --profile minimal` instala só as 2 regras always-on e as 10 skills; workflows via `@task-flow-*` (sem `task_work`, `coding_standards` glob, etc.). `standard` (padrão) copia todas as regras `.cursor/rules/`.
103
103
 
104
104
  **Compartilhar com o time:** `init --share-ai-config` não ignora `.cursor/skills/` nem `.cursor/rules/` no `.gitignore` (só `.cursor/settings.json` e overrides locais). Padrão: `.cursor/` inteiro ignorado — menos ruído no repo, config local por dev.
105
105
 
106
106
  | Comando | Por Que Usar | Feature Principal |
107
107
  |---------|--------------|-------------------|
108
+ | `task-flow: from contexts` | **Gera** tasks a partir de specs/mockups | Lê arquivos em `contexts/` (PDF, imagem, texto…) e adiciona linhas em `tasks.input.txt`; depois rode `sync` |
108
109
  | `task-flow: sync` | **Sincroniza** tarefas do arquivo texto com o sistema | Mantém tudo sincronizado automaticamente - adiciona novas, remove deletadas, preserva seu progresso |
109
- | `task-flow: think` | **Descobre** tarefas que você esqueceu | Analisa código e sugere tarefas que faltam (testes, refatoração, documentação) |
110
110
  | `task-flow: audit` | **Avalia** o quanto o código bate com os padrões de codificação | Analisa a codebase, dá um score por categoria e pergunta quais melhorias você quer adotar — sem impor nada |
111
- | `task-flow: check` | **Valida** lint e build antes de revisar ou commitar | Roda lint com fix quando disponível e depois build, corrigindo problemas do projeto atual |
112
- | `task-flow: improve changes` | **Audita** só o diff atual | Faz o mesmo audit de padrões, mas restrito aos arquivos alterados em relação ao `HEAD` |
113
111
  | `task-flow: status` | **Visualiza** o progresso rapidamente | Vê resumo com tasks completas, em andamento e quantas subtarefas faltam |
114
112
  | `task-flow: run next X` | **Automatiza** o trabalho nas próximas subtarefas | A IA trabalha nas próximas X subtarefas sequencialmente, você só acompanha |
115
113
  | `task-flow: run X` | **Completa** uma tarefa inteira de uma vez | Executa todas as subtarefas de uma tarefa específica (permite trabalho paralelo) |
116
114
  | `task-flow: run X,Y` | **Completa** múltiplas tarefas | Executa tarefas separadas por vírgula (ex: `task-flow: run 10,11`) |
117
115
  | `task-flow: run all` | **Completa** todas as tarefas | Executa todas as tarefas pendentes |
118
- | `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`) |
119
116
  | `task-flow: validate` | **Valida** implementação e **preenche lacunas** | Auditoria profunda: reverifica done/pending, corrige status falso, adiciona lacunas em `tasks.input.txt` e faz sync |
120
- | `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`) |
121
- | `task-flow: estimate X` | **Estima** tempo para gestão | Calcula estimativa de tempo (ex: `task-flow: estimate 1` ou `task-flow: estimate 10,11`) |
117
+ | `task-flow: estimate X` | **Estima** tempo para gestão | `estimate 1`, `estimate 10,11` ou `estimate all` |
122
118
  | `task-flow: report X` | **Documenta** implementação | Gera relatório detalhado (ex: `task-flow: report 1` ou `task-flow: report 10,11`) |
123
119
 
124
120
  **Fluxo típico:**
@@ -463,10 +459,10 @@ rbin-task-flow init --share-ai-config # Commit .cursor/skills and rules with th
463
459
  rbin-task-flow update # Update configs (keeps profile from .task-flow/install-meta.json)
464
460
  rbin-task-flow update --profile standard # Install all .cursor/rules/*.mdc
465
461
  rbin-task-flow reset # Reinstall Task Flow from scratch
466
- rbin-task-flow reset --graphify # Reset + graphify extract --backend claude-cli (Graphify CLI on PATH)
462
+ rbin-task-flow update --graphify # Update + graph at .task-flow/guides/graphify-out/
463
+ rbin-task-flow reset --graphify # Reset + graphify extract (Graphify CLI on PATH)
467
464
  rbin-task-flow version-check # Check for model updates
468
465
  rbin-task-flow info # Show information
469
- rbin-task-flow check # Run lint/fix and build when available
470
466
  rbin-task-flow estimate <ids> # Estimate time (e.g., "1" or "1,2" or "all")
471
467
  rbin-task-flow report <ids> # Generate report (e.g., "1" or "1,2" or "all")
472
468
  ```
@@ -477,13 +473,13 @@ After initializing, use these commands in your AI (Cursor/Claude/Codex) to autom
477
473
 
478
474
  **Per-platform optimization:** [index](.task-flow/guides/AI-PLATFORMS.md) · [Claude](.task-flow/guides/platforms/claude-code.md) · [Cursor](.task-flow/guides/platforms/cursor.md) · [Codex](.task-flow/guides/platforms/codex.md) · [Graphify](.task-flow/guides/GRAPHIFY.md)
479
475
 
480
- **Graphify (optional):** `rbin-task-flow init --graphify` cooperative setup + runs `graphify extract . --backend claude-cli` (CLI from `rbin-install-dev`; uses Claude Code subscription).
476
+ **Graphify (optional):** graph at `.task-flow/guides/graphify-out/`. New project: `rbin-task-flow init --graphify`. **Existing project:** `npm install -g rbin-task-flow@latest` then `rbin-task-flow update --graphify` (migrates legacy root `graphify-out/` + re-extracts). See [.task-flow/README.md](.task-flow/README.md#graphify-opcional) · [GRAPHIFY.md](.task-flow/guides/GRAPHIFY.md).
481
477
 
482
- **Claude / Cursor skills (v1.20+):** installs 15 skills — use `/task-flow-sync`, `/task-flow-run`, `/task-flow-validate`, etc.
478
+ **Claude / Cursor skills (v1.20+):** installs 10 skills — use `/task-flow-from-contexts`, `/task-flow-sync`, `/task-flow-run`, etc.
483
479
 
484
480
  **Codex (v1.21+):** optimized `AGENTS.md`, `.task-flow/guides/CODEX.md`, `.codex/config.toml`.
485
481
 
486
- **Cursor (v1.23+):** 2 always-on rules + 15 skills — `@task-flow-sync`, `@task-flow-run`, `@task-flow-validate`.
482
+ **Cursor (v1.23+):** 2 always-on rules + 10 skills — `@task-flow-from-contexts`, `@task-flow-sync`, `@task-flow-run`.
487
483
 
488
484
  **Minimal profile:** `init --profile minimal` copies only `task-flow-cursor.mdc` and `rbin-git-policy.mdc` plus skills; use `@task-flow-*` for workflows. `standard` (default) copies all rules under `.cursor/rules/`.
489
485
 
@@ -491,20 +487,16 @@ After initializing, use these commands in your AI (Cursor/Claude/Codex) to autom
491
487
 
492
488
  | Command | Why Use It | Key Feature |
493
489
  |---------|------------|-------------|
490
+ | `task-flow: from contexts` | **Draft** tasks from specs/mockups | Reads `contexts/` files (PDF, image, text…) and appends lines to `tasks.input.txt`; then run `sync` |
494
491
  | `task-flow: sync` | **Sync** tasks from text file with system | Keeps everything synchronized automatically - adds new, removes deleted, preserves your progress |
495
- | `task-flow: think` | **Discover** tasks you forgot | Analyzes code and suggests missing tasks (tests, refactoring, documentation) |
496
492
  | `task-flow: audit` | **Evaluate** how well your code matches coding standards | Scans the codebase, scores it by category and asks which improvements you want to adopt — never imposes changes |
497
- | `task-flow: check` | **Validate** lint and build before review or commit | Runs lint with autofix when available and then build, fixing current-project issues first |
498
- | `task-flow: improve changes` | **Audit** only the current diff | Runs the same standards audit, but restricted to files changed relative to `HEAD` |
499
493
  | `task-flow: status` | **Visualize** progress quickly | See summary with completed tasks, in progress, and remaining subtasks |
500
494
  | `task-flow: run next X` | **Automate** work on next subtasks | AI works on next X subtasks sequentially, you just follow along |
501
495
  | `task-flow: run X` | **Complete** an entire task at once | Executes all subtasks of a specific task (allows parallel work) |
502
496
  | `task-flow: run X,Y` | **Complete** multiple tasks | Executes comma-separated tasks (e.g., `task-flow: run 10,11`) |
503
497
  | `task-flow: run all` | **Complete** all tasks | Executes all pending tasks |
504
- | `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`) |
505
498
  | `task-flow: validate` | **Validate** implementation and **fill gaps** | Deep audit: recheck done/pending, fix false done, append gaps to `tasks.input.txt`, then sync |
506
- | `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`) |
507
- | `task-flow: estimate X` | **Estimate** time for management | Calculates time estimate (e.g., `task-flow: estimate 1` or `task-flow: estimate 10,11`) |
499
+ | `task-flow: estimate X` | **Estimate** time for management | `estimate 1`, `estimate 10,11`, or `estimate all` |
508
500
  | `task-flow: report X` | **Document** implementation | Generates detailed report (e.g., `task-flow: report 1` or `task-flow: report 10,11`) |
509
501
 
510
502
  **Typical workflow:**
package/bin/cli.js CHANGED
@@ -7,8 +7,6 @@ const { parseProfileOption } = require('../lib/profiles');
7
7
  const { checkVersionUpdates } = require('../lib/version');
8
8
  const { estimateTask } = require('../lib/estimate');
9
9
  const { generateReport } = require('../lib/report');
10
- const { runAudit } = require('../lib/audit');
11
- const { runCheck } = require('../lib/check');
12
10
  const chalk = require('chalk');
13
11
 
14
12
  program
@@ -21,7 +19,7 @@ function addInstallCommand(name, description, extra = {}) {
21
19
  .command(name)
22
20
  .description(description)
23
21
  .option('-p, --path <path>', 'Target directory (default: current directory)')
24
- .option('-g, --graphify', 'Run graphify extract . --backend claude-cli after install (requires graphify CLI)')
22
+ .option('-g, --graphify', 'Run graphify extract .task-flow/guides/graphify-out/ (claude-cli backend; requires graphify CLI)')
25
23
  .option(
26
24
  '--profile <profile>',
27
25
  'Cursor rules: minimal (2 always-on + skills) or standard (all rules); update without flag keeps .task-flow/install-meta.json'
@@ -80,24 +78,6 @@ program
80
78
  await generateReport(taskIds, targetPath);
81
79
  });
82
80
 
83
- program
84
- .command('audit')
85
- .description('List files with unstaged changes (not yet git add)')
86
- .option('-p, --path <path>', 'Target directory (default: current directory)')
87
- .action(async (options) => {
88
- const targetPath = options.path || process.cwd();
89
- await runAudit(targetPath);
90
- });
91
-
92
- program
93
- .command('check')
94
- .description('Run lint fix when available, then build')
95
- .option('-p, --path <path>', 'Target directory (default: current directory)')
96
- .action(async (options) => {
97
- const targetPath = options.path || process.cwd();
98
- await runCheck(targetPath);
99
- });
100
-
101
81
  program
102
82
  .command('info')
103
83
  .description('Show information about RBIN Task Flow')
@@ -119,9 +99,8 @@ program
119
99
  console.log(chalk.cyan(' rbin-task-flow version-check') + ' - Check for model updates');
120
100
  console.log(chalk.cyan(' rbin-task-flow estimate <ids>') + ' - Estimate time (e.g., "1" or "1,2" or "all")');
121
101
  console.log(chalk.cyan(' rbin-task-flow report <ids>') + ' - Generate report (e.g., "1" or "1,2" or "all")');
122
- console.log(chalk.cyan(' rbin-task-flow check') + ' - Run lint fix and build when available');
123
- console.log(chalk.cyan(' rbin-task-flow audit') + ' - List unstaged files (not yet git add)');
124
- console.log(chalk.cyan(' rbin-task-flow info') + ' - Show this information\n');
102
+ console.log(chalk.cyan(' rbin-task-flow info') + ' - Show this information');
103
+ console.log(chalk.gray(' task-flow: audit use in AI (@task-flow-audit)\n'));
125
104
  });
126
105
 
127
106
  program.parse();
package/lib/gitignore.js CHANGED
@@ -8,7 +8,6 @@ const ENTRIES_DEFAULT = [
8
8
  '.claude/',
9
9
  '.cursor/',
10
10
  '.task-flow/',
11
- 'graphify-out/',
12
11
  'CLAUDE.md',
13
12
  'AGENTS.md',
14
13
  ];
@@ -18,7 +17,6 @@ const ENTRIES_SHARE_AI_CONFIG = [
18
17
  '.cursor/settings.json',
19
18
  '.cursor/rules/*.local.mdc',
20
19
  '.task-flow/',
21
- 'graphify-out/',
22
20
  'CLAUDE.md',
23
21
  'AGENTS.md',
24
22
  ];
package/lib/graphify.js CHANGED
@@ -3,10 +3,14 @@ const path = require('path');
3
3
  const { spawnSync } = require('child_process');
4
4
  const { showSuccess, showWarning, showInfo } = require('./utils');
5
5
 
6
- const GRAPHIFY_OUT = 'graphify-out/';
6
+ const GRAPHIFY_GUIDES_DIR = '.task-flow/guides';
7
+ const GRAPHIFY_OUT_REL = `${GRAPHIFY_GUIDES_DIR}/graphify-out`;
8
+ const GRAPHIFY_GRAPH_JSON = `${GRAPHIFY_OUT_REL}/graph.json`;
9
+ const GRAPHIFY_GRAPH_FLAG = `--graph ${GRAPHIFY_GRAPH_JSON}`;
10
+ const LEGACY_GRAPHIFY_OUT = 'graphify-out';
7
11
  const UPSTREAM_GRAPHIFY_RULE = 'graphify.mdc';
8
- const GRAPHIFY_EXTRACT_CMD = 'graphify extract . --backend claude-cli';
9
- const GRAPHIFY_EXTRACT_ARGS = ['extract', '.', '--backend', 'claude-cli'];
12
+ const GRAPHIFY_EXTRACT_CMD = `graphify extract . --backend claude-cli --out ${GRAPHIFY_GUIDES_DIR}`;
13
+ const GRAPHIFY_EXTRACT_ARGS = ['extract', '.', '--backend', 'claude-cli', '--out', GRAPHIFY_GUIDES_DIR];
10
14
 
11
15
  function graphifyCliAvailable() {
12
16
  const result = spawnSync('graphify', ['--help'], {
@@ -44,25 +48,42 @@ function demoteUpstreamGraphifyRule(targetPath) {
44
48
  return true;
45
49
  }
46
50
 
47
- function ensureGraphifyGitignore(targetPath) {
51
+ function stripLegacyGraphifyGitignore(targetPath) {
48
52
  const gitignorePath = path.join(targetPath, '.gitignore');
49
53
  if (!fs.existsSync(gitignorePath)) {
50
54
  return false;
51
55
  }
52
56
 
53
57
  let content = fs.readFileSync(gitignorePath, 'utf8');
54
- const entry = GRAPHIFY_OUT.replace(/\/$/, '');
55
- const linePattern = new RegExp(`^${entry}\\/?$`, 'm');
58
+ const before = content;
59
+ const linePattern = new RegExp(`^${LEGACY_GRAPHIFY_OUT}\\/?\\s*$`, 'gm');
60
+ content = content.replace(linePattern, '');
56
61
 
57
- if (linePattern.test(content)) {
62
+ if (content === before) {
58
63
  return false;
59
64
  }
60
65
 
61
- if (!content.endsWith('\n')) {
62
- content += '\n';
66
+ fs.writeFileSync(gitignorePath, content.replace(/\n{3,}/g, '\n\n'));
67
+ return true;
68
+ }
69
+
70
+ async function migrateLegacyGraphifyOut(targetPath) {
71
+ await fs.ensureDir(path.join(targetPath, GRAPHIFY_GUIDES_DIR));
72
+
73
+ const legacyDir = path.join(targetPath, LEGACY_GRAPHIFY_OUT);
74
+ const guidesOutDir = path.join(targetPath, GRAPHIFY_OUT_REL);
75
+
76
+ if (!fs.existsSync(legacyDir)) {
77
+ return false;
63
78
  }
64
- content += `\n${entry}/\n`;
65
- fs.writeFileSync(gitignorePath, content);
79
+
80
+ if (fs.existsSync(guidesOutDir)) {
81
+ showInfo(`Legacy ${LEGACY_GRAPHIFY_OUT}/ kept — ${GRAPHIFY_OUT_REL}/ already exists`);
82
+ return false;
83
+ }
84
+
85
+ await fs.move(legacyDir, guidesOutDir);
86
+ showSuccess(`Graphify output moved: ${LEGACY_GRAPHIFY_OUT}/ → ${GRAPHIFY_OUT_REL}/`);
66
87
  return true;
67
88
  }
68
89
 
@@ -72,6 +93,8 @@ function runGraphifyExtract(targetPath) {
72
93
  return false;
73
94
  }
74
95
 
96
+ fs.ensureDirSync(path.join(targetPath, GRAPHIFY_GUIDES_DIR));
97
+
75
98
  showInfo(`Running ${GRAPHIFY_EXTRACT_CMD} (may take a few minutes)...`);
76
99
  const result = spawnSync('graphify', GRAPHIFY_EXTRACT_ARGS, {
77
100
  cwd: targetPath,
@@ -84,7 +107,7 @@ function runGraphifyExtract(targetPath) {
84
107
  return false;
85
108
  }
86
109
 
87
- showSuccess('Graphify knowledge graph (graphify-out/)');
110
+ showSuccess(`Graphify knowledge graph (${GRAPHIFY_OUT_REL}/)`);
88
111
  return true;
89
112
  }
90
113
 
@@ -94,29 +117,38 @@ async function setupGraphifyIntegration(targetPath, options = {}) {
94
117
  showSuccess('Graphify upstream rule demoted (alwaysApply: false) — Task Flow keeps priority');
95
118
  }
96
119
 
97
- const gitignoreUpdated = ensureGraphifyGitignore(targetPath);
98
- if (gitignoreUpdated) {
99
- showSuccess('graphify-out/ added to .gitignore');
120
+ await migrateLegacyGraphifyOut(targetPath);
121
+
122
+ const gitignoreCleaned = stripLegacyGraphifyGitignore(targetPath);
123
+ if (gitignoreCleaned) {
124
+ showInfo('Removed legacy graphify-out/ from .gitignore (graph lives under .task-flow/guides/)');
100
125
  }
101
126
 
127
+ await fs.ensureDir(path.join(targetPath, GRAPHIFY_GUIDES_DIR));
128
+
102
129
  if (options.extract) {
103
130
  runGraphifyExtract(targetPath);
104
131
  } else if (graphifyCliAvailable()) {
105
- const graphJson = path.join(targetPath, 'graphify-out', 'graph.json');
132
+ const graphJson = path.join(targetPath, GRAPHIFY_GRAPH_JSON);
106
133
  if (!fs.existsSync(graphJson)) {
107
134
  showInfo(`Graphify CLI detected — run: ${GRAPHIFY_EXTRACT_CMD} (or: rbin-task-flow init --graphify)`);
108
135
  }
109
136
  }
110
137
 
111
- showInfo('Graphify + Task Flow guide: .task-flow/guides/GRAPHIFY.md');
138
+ showInfo(`Graphify + Task Flow guide: .task-flow/guides/GRAPHIFY.md (output: ${GRAPHIFY_OUT_REL}/)`);
112
139
  }
113
140
 
114
141
  module.exports = {
115
142
  setupGraphifyIntegration,
116
143
  demoteUpstreamGraphifyRule,
117
- ensureGraphifyGitignore,
144
+ stripLegacyGraphifyGitignore,
145
+ migrateLegacyGraphifyOut,
118
146
  runGraphifyExtract,
119
147
  graphifyCliAvailable,
120
148
  GRAPHIFY_EXTRACT_CMD,
121
149
  GRAPHIFY_EXTRACT_ARGS,
150
+ GRAPHIFY_GUIDES_DIR,
151
+ GRAPHIFY_OUT_REL,
152
+ GRAPHIFY_GRAPH_JSON,
153
+ GRAPHIFY_GRAPH_FLAG,
122
154
  };
package/lib/install.js CHANGED
@@ -269,7 +269,6 @@ async function copyTaskFlow(targetPath, options = {}) {
269
269
  const PRESERVED_ON_INIT = [
270
270
  path.join(taskFlowDest, 'tasks.input.txt'),
271
271
  path.join(taskFlowDest, 'tasks.status.md'),
272
- path.join(taskFlowDest, 'tasks.flow.md'),
273
272
  path.join(taskFlowDest, 'install-meta.json'),
274
273
  ];
275
274
 
@@ -296,25 +295,13 @@ async function copyTaskFlow(targetPath, options = {}) {
296
295
  await fs.ensureDir(path.join(taskFlowDest, 'guides', 'reports'));
297
296
  await migrateLegacyTaskFlowLayout(taskFlowDest);
298
297
 
299
- const flowPath = path.join(taskFlowDest, 'tasks.flow.md');
300
- if (!fs.existsSync(flowPath)) {
301
- const flowStub = [
302
- '# Task Flow — Dependencies, Hours & Model Recommendations',
303
- '',
304
- '<!-- Populated by task-flow: generate flow. Do not edit manually. -->',
305
- '<!-- Horas: uso para cobrança ao cliente -->',
306
- '',
307
- ].join('\n');
308
- await fs.writeFile(flowPath, flowStub);
309
- }
310
-
311
298
  showSuccess('Task Flow directory');
312
299
  if (isReset) {
313
300
  showWarning('Reset completed: .task-flow was recreated from scratch');
314
301
  } else if (isUpdate) {
315
302
  showInfo('Protected: .internal/ (your task data is safe)');
316
303
  } else {
317
- showInfo('Protected on init: .internal/, tasks.input.txt, tasks.status.md, tasks.flow.md');
304
+ showInfo('Protected on init: .internal/, tasks.input.txt, tasks.status.md');
318
305
  }
319
306
  }
320
307
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rbin-task-flow",
3
- "version": "1.25.1",
3
+ "version": "1.26.0",
4
4
  "description": "AI-powered task management for Claude and Cursor",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -20,7 +20,6 @@
20
20
  "cli",
21
21
  "task-management",
22
22
  "ai-powered",
23
- "generate-flow",
24
23
  "tasks-flow"
25
24
  ],
26
25
  "author": "Rubens de Oliveira",
@@ -1,15 +0,0 @@
1
- ---
2
- name: task-flow-check
3
- description: Runs project lint fix and build from package.json until passing. Use when the user says task-flow check, run lint and build, or validate project before commit.
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Task Flow — Check
8
-
9
- 1. Read `package.json` scripts.
10
- 2. Run lint with fix variant if present (`lint:fix`, `lint-fix`, or `lint -- --fix`); fix issues.
11
- 3. Run `build` if defined; fix failures.
12
- 4. Re-run until both pass.
13
- 5. Report what ran and final status.
14
-
15
- Does not change task files. Reference: `.cursor/rules/task_check.mdc`
@@ -1,15 +0,0 @@
1
- ---
2
- name: task-flow-generate-flow
3
- description: Populates tasks.flow.md with dependencies, billing hours, and model recommendations for RBIN Task Flow tasks. Use when the user says task-flow generate flow, gerar flow, or tasks flow dependencies.
4
- disable-model-invocation: true
5
- paths: [".task-flow/**"]
6
- ---
7
-
8
- # Task Flow — Generate flow
9
-
10
- 1. Read `.task-flow/.internal/tasks.json` and optional `status.json`.
11
- 2. For each task: dependencies, hour range (billing), 3 models (GPT-5.x, Composer, Claude Haiku/Sonnet only — **never Opus**).
12
- 3. Write `.task-flow/tasks.flow.md` (overwrite populated sections).
13
- 4. Use AI judgment for model order and effort per task.
14
-
15
- Reference: `.cursor/rules/task_generate_flow.mdc`
@@ -1,15 +0,0 @@
1
- ---
2
- name: task-flow-improve-changes
3
- description: Audits only uncommitted files against coding standards. Use when the user says task-flow improve changes, audit my diff, or check uncommitted changes against standards.
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Task Flow — Improve changes
8
-
9
- 1. Run `git diff --name-only HEAD` (read-only git).
10
- 2. If empty, stop — no uncommitted changes.
11
- 3. Audit **only** those paths using the same checklist as audit (`.cursor/rules/coding_standards.mdc`). Full reference: `.task-flow/guides/coding-standards-full.md` — relevant sections only if a category needs depth.
12
- 4. Present findings; ask what to fix.
13
- 5. Does **not** run lint/build — use `/task-flow-check` separately.
14
-
15
- Reference: `.cursor/rules/task_improve_changes.mdc`
@@ -1,14 +0,0 @@
1
- ---
2
- name: task-flow-refactor
3
- description: Refactors code for task X without changing behavior; removes explanatory comments. Use when the user says task-flow refactor X or refactor completed task code.
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Task Flow — Refactor
8
-
9
- 1. Identify files related to task X (from implementation scope).
10
- 2. Remove explanatory comments; keep only `// ────────────────────────────────` section separators.
11
- 3. Improve names/structure; **no** behavior change.
12
- 4. Never run git write commands.
13
-
14
- Reference: `.cursor/rules/task_refactor.mdc`, `.cursor/rules/code_comments.mdc`
@@ -1,14 +0,0 @@
1
- ---
2
- name: task-flow-review
3
- description: Verifies completed RBIN Task Flow tasks are actually implemented in the codebase. Use when the user says task-flow review X, review task 1, or verify done tasks.
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Task Flow — Review
8
-
9
- 1. Read `tasks.json`, `status.json` for task ID(s) X or `all`.
10
- 2. For each subtask marked `done`: verify files/code/tests exist and match requirements.
11
- 3. Report ✅ correct vs ⚠️ falsely marked done.
12
- 4. Ask if user wants status reverted to `pending` / `in_progress`.
13
-
14
- Reference: `.cursor/rules/task_review.mdc`
@@ -1,19 +0,0 @@
1
- ---
2
- name: task-flow-think
3
- description: Analyzes the codebase and suggests new lines for tasks.input.txt without adding them automatically. Use when the user says task-flow think, suggest tasks, analise tasks novas, or check for missing tasks.
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Task Flow — Think
8
-
9
- 1. Read `.task-flow/tasks.input.txt` (existing plan).
10
- 2. Scan codebase: TODOs, missing tests, half-done features, security/perf gaps.
11
- 3. Propose new tasks as `- Description` lines (RBIN format).
12
- 4. **Ask** user before writing to `tasks.input.txt`.
13
- 5. If user confirms, append only new lines; then suggest `/task-flow-sync`.
14
-
15
- Optional: `graphify query` on large repos before suggesting.
16
-
17
- For deep verify + auto-add lacunas (no ask): `@task-flow-validate` (`task-flow: validate`).
18
-
19
- Reference: `.cursor/rules/task_analysis.mdc` · Sync after confirm: `@task-flow-sync`
@@ -1,45 +0,0 @@
1
- ---
2
- description: Suggests new tasks for tasks.input.txt via task-flow think. Use for think, suggest tasks, analyze codebase for missing tasks — not for sync (use task-flow-sync.mdc).
3
- alwaysApply: false
4
- ---
5
-
6
- # task-flow: think
7
-
8
- **Not sync.** For `task-flow: sync` use [task-flow-sync.mdc](mdc:.cursor/rules/task-flow-sync.mdc) or `@task-flow-sync`.
9
-
10
- **Not validate.** For deep verify + auto-add lacunas use [task_validate.mdc](mdc:.cursor/rules/task_validate.mdc) or `@task-flow-validate`.
11
-
12
- **Prefer:** `@task-flow-think` · After user adds lines: `@task-flow-sync`
13
-
14
- ## When to run
15
-
16
- User says `task-flow: think`, `suggest tasks`, `check for new tasks`, `analyze codebase for tasks`, etc.
17
-
18
- ## Process
19
-
20
- 1. Read `.task-flow/tasks.input.txt` (existing planned tasks)
21
- 2. Scan codebase for gaps: TODO/FIXME, missing tests, incomplete features, docs, security, performance, error handling
22
- 3. Propose **specific** lines: `- Task description` (no `[ ]`)
23
- 4. **Ask** before adding to `tasks.input.txt` — never auto-add
24
- 5. If user confirms: append only; do not remove or edit existing lines
25
- 6. Suggest `task-flow: sync` after input changes
26
-
27
- ## Output format
28
-
29
- ```markdown
30
- ## Suggested Tasks for tasks.input.txt
31
-
32
- - Add unit tests for UserService
33
- - Implement error handling in API endpoints
34
- ```
35
-
36
- ## Optional roadmap
37
-
38
- For package improvements see [.task-flow/guides/OPTIMIZATION-PLAN.md](mdc:.task-flow/guides/OPTIMIZATION-PLAN.md) — not part of think unless user asks.
39
-
40
- ## Integration
41
-
42
- - [task-flow-sync.mdc](mdc:.cursor/rules/task-flow-sync.mdc) after new tasks are added
43
- - [rbin-git-policy.mdc](mdc:.cursor/rules/rbin-git-policy.mdc) — never commit automatically
44
-
45
- **Principle:** Suggest actionable tasks; user decides what enters `tasks.input.txt`.
@@ -1,37 +0,0 @@
1
- ---
2
- description: Runs lint fix and build for task-flow check until project passes.
3
- alwaysApply: false
4
- ---
5
-
6
- # task-flow: check
7
-
8
- When the user runs `task-flow: check`:
9
-
10
- 1. **Detect project scripts**: Read `package.json` and look for lint and build scripts.
11
- 2. **Run lint first**: Prefer a fix-capable lint command if present (`lint:fix`, `lint-fix`, or equivalent). If there is only `lint`, run it and fix the reported issues.
12
- 3. **Run build next**: If a `build` script exists, run it after lint succeeds.
13
- 4. **Fix failures**: If lint or build fails, fix the issues and re-run until they pass.
14
- 5. **Keep scope local**: This command is only for project checks. It does not run the coding-standards audit and does not change task files by itself.
15
-
16
- ---
17
-
18
- ## How to execute
19
-
20
- - **Step 1**: Read `package.json` and identify which package manager and scripts the project uses.
21
- - **Step 2**: Run lint first, preferring an autofix variant when one exists.
22
- - **Step 3**: Fix any lint errors or warnings that should be resolved now.
23
- - **Step 4**: Run build and fix any failures.
24
- - **Step 5**: Report what ran, what was skipped, and whether the project is passing.
25
-
26
- ---
27
-
28
- ## Natural language
29
-
30
- - **FAST FORMAT**: `task-flow: check` or `task-flow check`
31
- - "run checks", "run lint and build", "validate this project" → same command
32
-
33
- ---
34
-
35
- ## Principle
36
-
37
- > **Use `task-flow: check` to make the current project pass its local validation steps before reviewing or committing changes.**