rbin-task-flow 1.25.0 → 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.
- package/.claude/skills/rbin-coding-standards/SKILL.md +4 -3
- package/.claude/skills/rbin-coding-standards/reference.md +2 -0
- package/.claude/skills/task-flow-estimate/SKILL.md +8 -5
- package/.claude/skills/task-flow-from-contexts/SKILL.md +16 -0
- package/.claude/skills/task-flow-run/SKILL.md +1 -1
- package/.claude/skills/task-flow-sync/SKILL.md +0 -1
- package/.claude/skills/task-flow-sync/workflow.md +1 -1
- package/.claude/skills/task-flow-validate/SKILL.md +2 -2
- package/.cursor/rules/coding_standards.mdc +13 -0
- package/.cursor/rules/graphify-task-flow.mdc +7 -8
- package/.cursor/rules/task-flow-cursor.mdc +3 -8
- package/.cursor/rules/task-flow-sync.mdc +1 -1
- package/.cursor/rules/task_execution.mdc +2 -7
- package/.cursor/rules/task_from_contexts.mdc +93 -0
- package/.cursor/rules/task_validate.mdc +1 -7
- package/.cursor/rules/task_work.mdc +1 -1
- package/.task-flow/README.md +72 -55
- package/.task-flow/guides/AI-PLATFORMS.md +6 -7
- package/.task-flow/guides/CODEX.md +16 -63
- package/.task-flow/guides/CURSOR.md +4 -5
- package/.task-flow/guides/GRAPHIFY.md +12 -13
- package/.task-flow/guides/coding-standards-full.md +145 -0
- package/.task-flow/guides/platforms/claude-code.md +13 -23
- package/.task-flow/guides/platforms/codex.md +9 -22
- package/.task-flow/guides/platforms/cursor.md +14 -35
- package/.task-flow/tasks.input.txt +3 -4
- package/AGENTS.md +3 -13
- package/CLAUDE.md +3 -8
- package/README.md +16 -24
- package/bin/cli.js +3 -24
- package/lib/gitignore.js +0 -2
- package/lib/graphify.js +50 -18
- package/lib/install.js +1 -14
- package/package.json +1 -2
- package/.claude/skills/task-flow-check/SKILL.md +0 -15
- package/.claude/skills/task-flow-generate-flow/SKILL.md +0 -15
- package/.claude/skills/task-flow-improve-changes/SKILL.md +0 -15
- package/.claude/skills/task-flow-refactor/SKILL.md +0 -14
- package/.claude/skills/task-flow-review/SKILL.md +0 -14
- package/.claude/skills/task-flow-think/SKILL.md +0 -19
- package/.cursor/rules/task_analysis.mdc +0 -45
- package/.cursor/rules/task_check.mdc +0 -37
- package/.cursor/rules/task_generate_flow.mdc +0 -90
- package/.cursor/rules/task_improve_changes.mdc +0 -50
- package/.cursor/rules/task_refactor.mdc +0 -94
- package/.cursor/rules/task_review.mdc +0 -88
- package/lib/audit.js +0 -44
- package/lib/check.js +0 -113
|
@@ -8,13 +8,13 @@ Guia para extrair o máximo do **RBIN Task Flow** no [Cursor](https://cursor.com
|
|
|
8
8
|
|
|
9
9
|
## 1. Por que o Task Flow “nasce” bem no Cursor
|
|
10
10
|
|
|
11
|
-
O instalador copia regras para `.cursor/rules/` e **
|
|
11
|
+
O instalador copia regras para `.cursor/rules/` e **10 skills** para `.cursor/skills/`. Desde **v1.23** (otimização P0 — ver [OPTIMIZATION-PLAN.md](../OPTIMIZATION-PLAN.md)):
|
|
12
12
|
|
|
13
13
|
| Camada | O que carrega | Tokens (~) |
|
|
14
14
|
|--------|----------------|------------|
|
|
15
15
|
| **Always-on (2)** | `task-flow-cursor.mdc`, `rbin-git-policy.mdc` | ~0,9k / turno |
|
|
16
16
|
| **Skills** | `@task-flow-run`, `@task-flow-sync`, … | sob demanda |
|
|
17
|
-
| **Intelligent** | `task_work`, `task_audit`, `
|
|
17
|
+
| **Intelligent** | `task_work`, `task_audit`, `task_validate`, … | quando o Agent casa `description` |
|
|
18
18
|
| **Glob** | `task-flow-sync`, `task_generation` (`.task-flow/**`), `coding_standards` (`src/**`, `app/**`) | arquivos no contexto |
|
|
19
19
|
|
|
20
20
|
Isso significa:
|
|
@@ -44,7 +44,7 @@ Documentação: [Cursor Rules](https://cursor.com/docs/context/rules) · Referê
|
|
|
44
44
|
|------|-------------|-------------------------|
|
|
45
45
|
| **Always Apply** | `alwaysApply: true` | `task-flow-cursor`, `rbin-git-policy` only |
|
|
46
46
|
| **Apply to Specific Files** | `globs: "**/.task-flow/**"` | Regras só ao editar tasks/status/contexts |
|
|
47
|
-
| **Apply Intelligently** | `description` rica, `alwaysApply: false`, sem globs | `task_audit`, `
|
|
47
|
+
| **Apply Intelligently** | `description` rica, `alwaysApply: false`, sem globs | `task_audit`, `task_validate` — quando o assunto é auditoria/validação |
|
|
48
48
|
| **Apply Manually** | sem description/globs, `alwaysApply: false` | Rascunhos, regras experimentais — `@nome-da-regra` |
|
|
49
49
|
|
|
50
50
|
### Matriz frontmatter (oficial Cursor)
|
|
@@ -70,18 +70,13 @@ Confirme no projeto: `rg 'alwaysApply: true' .cursor/rules` → deve listar **ap
|
|
|
70
70
|
| `rbin-git-policy.mdc` | git write proibido + sugestão de commit | **Always** |
|
|
71
71
|
| `task_work.mdc` | fallback curto de `run` | Intelligent — use `@task-flow-run` |
|
|
72
72
|
| `task_execution.mdc` | índice stub → skills | Intelligent / `@` manual |
|
|
73
|
+
| `task_from_contexts.mdc` | draft tasks de `contexts/` | Intelligent |
|
|
73
74
|
| `task-flow-sync.mdc` | `sync` completo | **Glob** `.task-flow/**` · prefer `@task-flow-sync` |
|
|
74
75
|
| `task_generation.mdc` | templates de subtarefas | **Glob** `.task-flow/**` |
|
|
75
|
-
| `task_analysis.mdc` | `think` apenas | Intelligent |
|
|
76
76
|
| `task_status.mdc` | `status` | **Glob** `.task-flow/**` |
|
|
77
77
|
| `task_audit.mdc` | audit vs checklist standards | Intelligent |
|
|
78
|
-
| `task_improve_changes.mdc` | audit só no diff | Intelligent |
|
|
79
|
-
| `task_check.mdc` | lint + build | Intelligent |
|
|
80
|
-
| `task_review.mdc` | verificar “done” | Intelligent |
|
|
81
|
-
| `task_refactor.mdc` | refactor sem mudar comportamento | Intelligent |
|
|
82
78
|
| `task_estimate.mdc` | estimativas | Intelligent / `@` |
|
|
83
79
|
| `task_report.mdc` | relatórios | Intelligent / `@task-flow-report` |
|
|
84
|
-
| `task_generate_flow.mdc` | `tasks.flow.md` | Intelligent / `@` |
|
|
85
80
|
| `coding_standards.mdc` | checklist (~100 linhas) | **Glob** `src/**`, `app/**` |
|
|
86
81
|
| `code_comments.mdc` | sem comentários explicativos | **Glob** `**/*.{ts,tsx,js,jsx}` |
|
|
87
82
|
| `graphify-task-flow.mdc` | Graphify + Task Flow | Intelligent |
|
|
@@ -113,9 +108,9 @@ Cursor suporta o mesmo formato que Claude Code: `.cursor/skills/<nome>/SKILL.md`
|
|
|
113
108
|
| Mesmo workflow em Claude + Cursor | Skills em **ambas** pastas | ✅ |
|
|
114
109
|
| Referência enorme (coding standards) | checklist glob (~1k tokens) | `@rbin-coding-standards` + full doc por seção |
|
|
115
110
|
|
|
116
|
-
O `rbin-task-flow init` copia **
|
|
111
|
+
O `rbin-task-flow init` copia **10 skills** para `.cursor/skills/` (mesmo conteúdo que `.claude/skills/`). No Agent, use `@task-flow-run`, `@task-flow-sync`, etc.
|
|
117
112
|
|
|
118
|
-
Após `rbin-task-flow init` ou `update`, use `@task-flow-*` no Agent. Para sync: `@task-flow-sync` (não `task_generation`
|
|
113
|
+
Após `rbin-task-flow init` ou `update`, use `@task-flow-*` no Agent. Para sync: `@task-flow-sync` (não `task_generation` isolado).
|
|
119
114
|
|
|
120
115
|
---
|
|
121
116
|
|
|
@@ -124,7 +119,7 @@ Após `rbin-task-flow init` ou `update`, use `@task-flow-*` no Agent. Para sync:
|
|
|
124
119
|
| Superfície | Task Flow | Dica |
|
|
125
120
|
|------------|-----------|------|
|
|
126
121
|
| **Agent** (Ctrl+I / Composer) | Melhor para `run next X`, implementação multi-arquivo | Abra arquivos de `contexts/` no chat se UI |
|
|
127
|
-
| **Chat** | `sync`, `
|
|
122
|
+
| **Chat** | `sync`, `status`, `estimate` | Peça explicitamente `task-flow: …` |
|
|
128
123
|
| **Cursor CLI** | Mesmas regras do projeto se `.cursor/rules` presente | Útil em CI local com agent |
|
|
129
124
|
|
|
130
125
|
**MCP:** regras não substituem MCP (DB, APIs). Task Flow não conflita — subtarefas podem dizer “usar MCP X” em `tasks.json`.
|
|
@@ -156,25 +151,12 @@ task-flow: run next 4
|
|
|
156
151
|
|
|
157
152
|
Ao terminar cada subtarefa, o Agent deve atualizar `status.json` + `tasks.status.md` (`@task-flow-run` / `task_work` stub).
|
|
158
153
|
|
|
159
|
-
```text
|
|
160
|
-
task-flow: check
|
|
161
|
-
```
|
|
162
|
-
|
|
163
154
|
Commit **manual** (regra `rbin-git-policy`).
|
|
164
155
|
|
|
165
156
|
### 6.3 Qualidade antes do merge
|
|
166
157
|
|
|
167
158
|
```text
|
|
168
|
-
task-flow:
|
|
169
|
-
task-flow: review 2
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
`improve changes` usa `git diff --name-only HEAD` — só arquivos alterados.
|
|
173
|
-
|
|
174
|
-
### 6.4 Refactor pós-task
|
|
175
|
-
|
|
176
|
-
```text
|
|
177
|
-
task-flow: refactor 1
|
|
159
|
+
task-flow: validate
|
|
178
160
|
```
|
|
179
161
|
|
|
180
162
|
Remove comentários explicativos; mantém separadores `// ───`.
|
|
@@ -197,7 +179,6 @@ Coloque PNG/PDF/MD em `.task-flow/contexts/`. Nas subtarefas geradas, instruçõ
|
|
|
197
179
|
| Execução clara | `task-flow: run next 3` |
|
|
198
180
|
| Task específica | `task-flow: run 2` |
|
|
199
181
|
| Sincronizar após editar input | `task-flow: sync` |
|
|
200
|
-
| Auditoria focada | `task-flow: improve changes` (não `audit` no repo inteiro) |
|
|
201
182
|
| Padrões ao codificar | `@rbin-coding-standards` ou arquivo em `src/` (checklist glob) |
|
|
202
183
|
| Regra sob demanda | `@task-flow-audit` ou `@task_audit` + `task-flow: audit` |
|
|
203
184
|
| Run explícito | `@task-flow-run` + `task-flow: run next 2` |
|
|
@@ -246,9 +227,9 @@ Cursor também pode ler `AGENTS.md` em alguns fluxos; no RBIN ele é focado em *
|
|
|
246
227
|
|---------|-------------|
|
|
247
228
|
| **@-mentions** | `@tasks.input.txt`, `@contexts/dashboard.png`, `@task-flow-run` |
|
|
248
229
|
| **Notepads / Docs** | Links para `.task-flow/README.md` |
|
|
249
|
-
| **Bugbot / PR** | `task-flow:
|
|
230
|
+
| **Bugbot / PR** | `task-flow: validate` antes de merge |
|
|
250
231
|
| **Background Agent** | `run next 1` por job; cuidado com conflito de `status.json` |
|
|
251
|
-
| **Plan mode** | `
|
|
232
|
+
| **Plan mode** | Edite `tasks.input.txt` + `sync` antes de `run` |
|
|
252
233
|
|
|
253
234
|
---
|
|
254
235
|
|
|
@@ -260,9 +241,8 @@ Cursor também pode ler `AGENTS.md` em alguns fluxos; no RBIN ele é focado em *
|
|
|
260
241
|
| `rbin-task-flow update` | Atualiza rules; preserva `.internal/` |
|
|
261
242
|
| `rbin-task-flow reset` | Recria `.task-flow` do zero |
|
|
262
243
|
| `rbin-task-flow reset --graphify` | Reset + `graphify extract . --backend claude-cli` |
|
|
263
|
-
| `rbin-task-flow audit` | Lista arquivos **unstaged** (não substitui `task-flow: improve changes`) |
|
|
264
244
|
|
|
265
|
-
O Agent executa o workflow; o CLI prepara arquivos.
|
|
245
|
+
O Agent executa o workflow (`task-flow: audit`, `task-flow: run`, etc.); o CLI prepara arquivos.
|
|
266
246
|
|
|
267
247
|
---
|
|
268
248
|
|
|
@@ -301,13 +281,12 @@ Para open source: documente no README — contribuidores podem usar `--share-ai-
|
|
|
301
281
|
## 13. Checklist de maturidade Cursor + Task Flow
|
|
302
282
|
|
|
303
283
|
- [x] `task-flow-cursor.mdc` + `rbin-git-policy.mdc` (2 always-on, v1.23)
|
|
304
|
-
- [x]
|
|
284
|
+
- [x] 10 skills em `.cursor/skills/` após `init`
|
|
305
285
|
- [x] Otimização P0 de tokens (ver §3)
|
|
306
286
|
- [ ] `task-flow: sync` após cada edição em `tasks.input.txt`
|
|
307
287
|
- [ ] `@task-flow-run` (não `@task_work`) para implementar
|
|
308
288
|
- [ ] Contextos em `.task-flow/contexts/` para tasks de UI
|
|
309
|
-
- [ ] `
|
|
310
|
-
- [ ] `task-flow: check` antes de push
|
|
289
|
+
- [ ] `task-flow: validate` antes de merge quando relevante
|
|
311
290
|
- [ ] Time alinhado: git manual sempre
|
|
312
291
|
|
|
313
292
|
---
|
|
@@ -317,7 +296,7 @@ Para open source: documente no README — contribuidores podem usar `--share-ai-
|
|
|
317
296
|
Com Graphify instalado (`rbin-install-dev`), o Task Flow traz **`graphify-task-flow.mdc`** (`alwaysApply: false`) em vez de depender do `graphify.mdc` always-on do `graphify cursor install`.
|
|
318
297
|
|
|
319
298
|
- **`rbin-task-flow init`** rebaixa `graphify.mdc` upstream se existir.
|
|
320
|
-
- Use Graphify só em **`task-flow: run`**, `
|
|
299
|
+
- Use Graphify só em **`task-flow: run`**, `validate` — ver [GRAPHIFY.md](../GRAPHIFY.md).
|
|
321
300
|
|
|
322
301
|
---
|
|
323
302
|
|
|
@@ -9,10 +9,9 @@
|
|
|
9
9
|
|
|
10
10
|
## Contexts:
|
|
11
11
|
|
|
12
|
-
- The `.task-flow/contexts/` folder is for
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
- To reference a specific context in a task: `task-flow-screen filename.ext`
|
|
12
|
+
- The `.task-flow/contexts/` folder is for specs, mockups, requirements (`.md`, `.txt`, `.png`, `.jpg`, `.pdf`, `.json`, etc.)
|
|
13
|
+
- **`task-flow: from contexts`** — reads new files in `contexts/` and appends `- tasks` here (then run `task-flow: sync`)
|
|
14
|
+
- Manual reference in a task: `task-flow-screen filename.ext`
|
|
16
15
|
- Example: `- Create login screen task-flow-screen login-mockup.png`
|
|
17
16
|
|
|
18
17
|
## Tasks:
|
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:
|
|
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
|
|
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
|
-
|
|
|
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
|
|
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
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
<a id="português"></a>
|
|
34
34
|
# 🇧🇷 Português
|
|
35
35
|
|
|
36
|
-
> **v1.25.
|
|
36
|
+
> **v1.25.1** — Padrão `.env` Vercel nos coding standards. De **1.25.0**: `npm install -g rbin-task-flow@1.25.1` e `rbin-task-flow update`. [CHANGELOG](CHANGELOG.md) · [Publicação](RELEASE-1.25.1.md).
|
|
37
37
|
|
|
38
38
|
## O Que É Este Projeto?
|
|
39
39
|
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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:**
|
|
@@ -419,7 +415,7 @@ Para problemas ou perguntas:
|
|
|
419
415
|
<a id="english"></a>
|
|
420
416
|
# 🇬🇧 English
|
|
421
417
|
|
|
422
|
-
> **v1.25.
|
|
418
|
+
> **v1.25.1** — Vercel `.env` pattern in coding standards. From **1.25.0**: `npm install -g rbin-task-flow@1.25.1` then `rbin-task-flow update`. [CHANGELOG](CHANGELOG.md) · [Release guide](RELEASE-1.25.1.md).
|
|
423
419
|
|
|
424
420
|
## What Is This Project?
|
|
425
421
|
|
|
@@ -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
|
|
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
|
|
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
|
|
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 +
|
|
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:
|
|
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 .
|
|
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
|
|
123
|
-
console.log(chalk.
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
55
|
-
const linePattern = new RegExp(`^${
|
|
58
|
+
const before = content;
|
|
59
|
+
const linePattern = new RegExp(`^${LEGACY_GRAPHIFY_OUT}\\/?\\s*$`, 'gm');
|
|
60
|
+
content = content.replace(linePattern, '');
|
|
56
61
|
|
|
57
|
-
if (
|
|
62
|
+
if (content === before) {
|
|
58
63
|
return false;
|
|
59
64
|
}
|
|
60
65
|
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
65
|
-
fs.
|
|
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(
|
|
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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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,
|
|
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(
|
|
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
|
-
|
|
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
|
|
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.
|
|
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`
|