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.
- package/.claude/skills/rbin-coding-standards/SKILL.md +1 -1
- 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/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 +70 -53
- 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/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 +14 -22
- 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
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
|
@@ -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:**
|
|
@@ -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`
|
|
@@ -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.**
|