rbin-task-flow 1.26.1 → 1.30.1
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/task-flow-report/SKILL.md +3 -1
- package/.claude/skills/task-flow-run/SKILL.md +15 -9
- package/.claude/skills/task-flow-run/workflow.md +94 -34
- package/.claude/skills/task-flow-split/SKILL.md +23 -0
- package/.claude/skills/task-flow-status/SKILL.md +1 -1
- package/.claude/skills/task-flow-sync/workflow.md +3 -3
- package/.cursor/rules/task-flow-cursor.mdc +4 -0
- package/.cursor/rules/task-flow-sync.mdc +3 -3
- package/.cursor/rules/task_execution.mdc +1 -0
- package/.cursor/rules/task_generation.mdc +2 -2
- package/.cursor/rules/task_split.mdc +112 -0
- package/.cursor/rules/task_status.mdc +2 -2
- package/.cursor/rules/task_validate.mdc +3 -2
- package/.cursor/rules/task_work.mdc +8 -26
- package/.task-flow/README.md +32 -9
- package/.task-flow/dev-logs/.gitkeep +0 -0
- package/.task-flow/guides/AI-PLATFORMS.md +5 -4
- package/.task-flow/guides/CODEX.md +18 -3
- package/.task-flow/guides/CURSOR.md +3 -2
- package/.task-flow/guides/GRAPHIFY.md +3 -3
- package/.task-flow/guides/platforms/claude-code.md +4 -3
- package/.task-flow/guides/platforms/codex.md +1 -0
- package/.task-flow/guides/platforms/cursor.md +13 -11
- package/AGENTS.md +9 -6
- package/CLAUDE.md +1 -0
- package/README.md +38 -22
- package/bin/cli.js +8 -3
- package/lib/cursor.js +1 -1
- package/lib/install.js +91 -14
- package/lib/profiles.js +2 -2
- package/lib/version.js +1 -1
- package/package.json +1 -1
|
@@ -7,9 +7,11 @@ paths: [".task-flow/**"]
|
|
|
7
7
|
|
|
8
8
|
# Task Flow — Report
|
|
9
9
|
|
|
10
|
-
1. Verify task X is fully `done` in `status.json` (warn if
|
|
10
|
+
1. Verify task X is fully `done` in `status.json` — **no** `manual`, `pending`, or `in_progress` subtasks (warn and stop if any).
|
|
11
11
|
2. Read `tasks.json`; analyze related code changes (read-only git ok).
|
|
12
12
|
3. Write `.task-flow/guides/reports/task-X-implementation.md` using project template.
|
|
13
13
|
4. Create `.task-flow/guides/reports/` if missing.
|
|
14
14
|
|
|
15
|
+
**Never** generate this report during `task-flow: run` — only when the user explicitly asks for `task-flow: report`.
|
|
16
|
+
|
|
15
17
|
Reference: `.cursor/rules/task_report.mdc`
|
|
@@ -13,15 +13,21 @@ paths: [".task-flow/**"]
|
|
|
13
13
|
|
|
14
14
|
## Steps
|
|
15
15
|
|
|
16
|
-
1. Read `status.json
|
|
17
|
-
2.
|
|
18
|
-
3.
|
|
19
|
-
4.
|
|
20
|
-
5.
|
|
21
|
-
6.
|
|
22
|
-
7.
|
|
23
|
-
8.
|
|
24
|
-
9.
|
|
16
|
+
1. Read `status.json`; resolve **`manual`** subtasks first via dev-logs + current conversation (see workflow).
|
|
17
|
+
2. List **pending** task/subtask IDs (`done`, `manual` until resolved).
|
|
18
|
+
3. **tasks.json:** partial read by task id if **>50** subtasks total.
|
|
19
|
+
4. Parse intent: `run next X` (default X=1) | `run X` | `run X,Y` | `run all`.
|
|
20
|
+
5. **`run X` / `run X,Y`:** Stop if earlier tasks/subtasks are not `done`.
|
|
21
|
+
6. Per subtask: `instructions` + `contexts/`; optional `graphify query`.
|
|
22
|
+
7. **Automatable** → `done` + `tasks.status.md` Summary.
|
|
23
|
+
8. **Manual intervention** → `manual` + `.task-flow/dev-logs/task-X.Y-manual.md`; user reports progress **in chat**; AI appends **Conversation log** and marks `done` only when verified complete.
|
|
24
|
+
9. Parent task all `done` → mark task `done`.
|
|
25
|
+
10. Suggest commit via `/rbin-git` — never git write.
|
|
26
|
+
|
|
27
|
+
## Never during run
|
|
28
|
+
|
|
29
|
+
- Mark `done` when manual steps remain unverified
|
|
30
|
+
- Write `guides/reports/task-*-implementation.md`
|
|
25
31
|
|
|
26
32
|
## Full workflow
|
|
27
33
|
|
|
@@ -4,56 +4,116 @@
|
|
|
4
4
|
|
|
5
5
|
| Input | Behavior |
|
|
6
6
|
|-------|----------|
|
|
7
|
-
| `task-flow: run next X` | Next X pending subtasks in order (
|
|
7
|
+
| `task-flow: run next X` | Next X **pending** subtasks in order (skip `done`; resolve `manual` first — see below) |
|
|
8
8
|
| `task-flow: run next` | X = 1 |
|
|
9
|
-
| `task-flow: run X` | All pending subtasks of task X |
|
|
9
|
+
| `task-flow: run X` | All **pending** subtasks of task X |
|
|
10
10
|
| `task-flow: run X,Y` | Tasks X then Y sequentially |
|
|
11
|
-
| `task-flow: run all` | All pending subtasks |
|
|
11
|
+
| `task-flow: run all` | All **pending** subtasks |
|
|
12
|
+
|
|
13
|
+
Subtasks in `manual` block later subtasks in the same task until the dev-log shows they are complete.
|
|
14
|
+
|
|
15
|
+
## Before picking pending subtasks — resolve `manual`
|
|
16
|
+
|
|
17
|
+
1. List all `manual` subtasks in scope (same task or global for `run next`).
|
|
18
|
+
2. Read `.task-flow/dev-logs/task-X.Y-manual.md` for each.
|
|
19
|
+
3. Use the **current conversation** (and codebase checks) to assess completion — no separate confirm command.
|
|
20
|
+
4. If the user reported progress in chat, append to the dev-log **Conversation log** (see format below).
|
|
21
|
+
5. When the log + verification show all manual steps done → set `done`, refresh `tasks.status.md`, continue the run.
|
|
22
|
+
6. If still incomplete → keep `manual`, tell the user what remains; do not skip marking done prematurely.
|
|
12
23
|
|
|
13
24
|
## Dependency check (`run X`)
|
|
14
25
|
|
|
15
26
|
1. For tasks `1 .. X-1`, verify every subtask is `done`.
|
|
16
|
-
2. If any pending
|
|
17
|
-
`⚠️ Cannot execute task X: complete tasks [list] first. Use task-flow: run Y.`
|
|
18
|
-
3.
|
|
27
|
+
2. If any `pending`, `manual`, or `in_progress`: stop with
|
|
28
|
+
`⚠️ Cannot execute task X: complete tasks [list] first. Use task-flow: run Y or finish manual steps in dev-logs.`
|
|
29
|
+
3. For task X: if any earlier subtask is still `manual` (dev-log incomplete), stop — resolve via conversation first.
|
|
19
30
|
|
|
20
31
|
## tasks.json — partial read (>50 subtasks)
|
|
21
32
|
|
|
22
|
-
1. From `status.json`, collect pending `(taskId, subtaskId)` for this run.
|
|
23
|
-
2. Count total subtasks in `tasks.json
|
|
24
|
-
3. If total **>50**: load
|
|
25
|
-
4. If **≤50**:
|
|
26
|
-
|
|
27
|
-
## Per subtask
|
|
28
|
-
|
|
29
|
-
1. Load subtask from `tasks.json
|
|
30
|
-
2.
|
|
31
|
-
3. Implement; verify (tests/build
|
|
32
|
-
4.
|
|
33
|
-
5.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
33
|
+
1. From `status.json`, collect **pending** `(taskId, subtaskId)` for this run.
|
|
34
|
+
2. Count total subtasks in `tasks.json`.
|
|
35
|
+
3. If total **>50**: load only each `tasks[]` entry for pending/manual task ids.
|
|
36
|
+
4. If **≤50**: full read is OK.
|
|
37
|
+
|
|
38
|
+
## Per subtask — fully automatable
|
|
39
|
+
|
|
40
|
+
1. Load subtask from `tasks.json`.
|
|
41
|
+
2. Read `.task-flow/contexts/` when cited.
|
|
42
|
+
3. Implement; verify (tests/build).
|
|
43
|
+
4. `done` in `status.json` + update `tasks.status.md` Summary.
|
|
44
|
+
5. Suggest commit via `@rbin-git` when appropriate.
|
|
45
|
+
|
|
46
|
+
## Per subtask — manual intervention required
|
|
47
|
+
|
|
48
|
+
When the agent **cannot** finish alone (deploy, console, credentials, production, third-party dashboard, etc.):
|
|
49
|
+
|
|
50
|
+
1. Implement everything possible in code/repo first.
|
|
51
|
+
2. Set **`manual`** in `status.json` — never `done`.
|
|
52
|
+
3. Create `.task-flow/dev-logs/task-X.Y-manual.md`:
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
# Task X.Y — Manual intervention required
|
|
56
|
+
|
|
57
|
+
**Subtask:** [title]
|
|
58
|
+
**Status:** manual
|
|
59
|
+
**Created:** [ISO 8601]
|
|
60
|
+
|
|
61
|
+
## What the AI completed
|
|
62
|
+
- [automated work]
|
|
63
|
+
|
|
64
|
+
## What you need to do manually
|
|
65
|
+
1. [clear step]
|
|
66
|
+
2. [clear step]
|
|
67
|
+
|
|
68
|
+
## Conversation log
|
|
69
|
+
(AI appends as you report progress in chat — no separate command)
|
|
70
|
+
|
|
71
|
+
### YYYY-MM-DDTHH:mm:ssZ
|
|
72
|
+
**User said:** [from conversation]
|
|
73
|
+
**Verified:** pending | complete
|
|
74
|
+
**Notes:** [what was checked; what remains]
|
|
47
75
|
```
|
|
48
76
|
|
|
77
|
+
4. `tasks.status.md`: `- [~] [title] — manual: .task-flow/dev-logs/task-X.Y-manual.md`
|
|
78
|
+
5. Stop further subtasks in that task.
|
|
79
|
+
6. Tell the user the manual steps; they report back **in normal chat** when done.
|
|
80
|
+
|
|
81
|
+
## Conversation-driven completion (any turn)
|
|
82
|
+
|
|
83
|
+
Applies during `run`, `status`, or whenever the user mentions manual work — **no `task-flow: confirm` command**.
|
|
84
|
+
|
|
85
|
+
1. Read `status.json` for `manual` subtasks.
|
|
86
|
+
2. Match user message to a dev-log (by task id, keywords, or open manual items).
|
|
87
|
+
3. Append **Conversation log** entry with what the user said.
|
|
88
|
+
4. Verify against checklist + codebase when possible.
|
|
89
|
+
5. All steps satisfied → `done` + `tasks.status.md` + continue blocked work on next `run`.
|
|
90
|
+
6. Partial → keep `manual`, update dev-log with remaining steps.
|
|
91
|
+
|
|
92
|
+
## Never during run
|
|
93
|
+
|
|
94
|
+
- Mark `done` when manual steps remain unverified
|
|
95
|
+
- Write `.task-flow/guides/reports/task-*-implementation.md` (`task-flow: report` only)
|
|
96
|
+
|
|
97
|
+
## Blocked (not manual)
|
|
98
|
+
|
|
99
|
+
Temporarily blocked without user action: `in_progress` + explain.
|
|
100
|
+
|
|
101
|
+
## status.json
|
|
102
|
+
|
|
103
|
+
Subtask status: `pending` | `done` | `in_progress` | `manual`
|
|
104
|
+
|
|
49
105
|
## Completion summary
|
|
50
106
|
|
|
51
107
|
```
|
|
52
108
|
✅ Completed N subtasks:
|
|
53
109
|
- Task 1.2: [title]
|
|
54
|
-
|
|
110
|
+
|
|
111
|
+
🖐️ Manual — waiting on you:
|
|
112
|
+
- Task 1.3: .task-flow/dev-logs/task-1.3-manual.md (report in chat when done)
|
|
113
|
+
|
|
114
|
+
📝 Next pending: Task 1.4 (after 1.3 resolves)
|
|
55
115
|
```
|
|
56
116
|
|
|
57
|
-
## Related
|
|
117
|
+
## Related
|
|
58
118
|
|
|
59
|
-
Cursor fallback
|
|
119
|
+
Cursor fallback: `.cursor/rules/task_work.mdc` — prefer `@task-flow-run` / this file.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-flow-split
|
|
3
|
+
description: Plans N parallel IA streams from pending tasks (split:N required). Non-conflicting areas, ordered by difficulty, outputs task-flow run X,Y,Z per tier. Use for task-flow split:3, split:2, dividir em 3 ias — not plain split.
|
|
4
|
+
disable-model-invocation: false
|
|
5
|
+
paths: [".task-flow/**"]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Task Flow — Split
|
|
9
|
+
|
|
10
|
+
## Status
|
|
11
|
+
|
|
12
|
+
!`head -20 .task-flow/tasks.status.md 2>/dev/null || echo "Run sync first"`
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
1. Parse **`split:N`** — N required (e.g. `split:3`). Plain `split` without `:N` → ask user. Optional scope: `split:3 50-72` or `split:2 50,51`.
|
|
17
|
+
2. Load pending IDs from `status.json`; read `tasks.json` for those tasks.
|
|
18
|
+
3. Partition into **N** non-conflicting streams; keep dependency chains together.
|
|
19
|
+
4. Order streams IA-1 (strongest) → IA-N by difficulty.
|
|
20
|
+
5. Output **N lines:** `task-flow: run id,id,id` + coordination notes.
|
|
21
|
+
6. **Do not** implement or update status.
|
|
22
|
+
|
|
23
|
+
Reference: `.cursor/rules/task_split.mdc`
|
|
@@ -7,7 +7,7 @@ disable-model-invocation: false
|
|
|
7
7
|
# Task Flow — Status
|
|
8
8
|
|
|
9
9
|
1. Read `.task-flow/tasks.status.md`.
|
|
10
|
-
2. Display summary (✅ completed, ⏳ in progress, 📝 remaining) and task/subtask checkboxes.
|
|
10
|
+
2. Display summary (✅ completed, ⏳ in progress, 🖐️ manual, 📝 remaining) and task/subtask checkboxes (`[x]` `[ ]` `[~]`).
|
|
11
11
|
3. If file missing, suggest `/task-flow-sync`.
|
|
12
12
|
|
|
13
13
|
Reference: `.cursor/rules/task_status.mdc`
|
|
@@ -43,12 +43,12 @@ All subtasks `pending`; task `pending`.
|
|
|
43
43
|
## tasks.status.md
|
|
44
44
|
|
|
45
45
|
- Auto-generated banner warning (do not edit manually).
|
|
46
|
-
- Summary section with counts.
|
|
47
|
-
- `- [ ]` / `- [x]` for tasks and indented subtasks.
|
|
46
|
+
- Summary section with counts (include 🖐️ manual when any).
|
|
47
|
+
- `- [ ]` / `- [x]` / `- [~]` for tasks and indented subtasks (`[~]` → link dev-log).
|
|
48
48
|
|
|
49
49
|
## Sync-only rules
|
|
50
50
|
|
|
51
|
-
- Preserve status on modified tasks when subtasks still match.
|
|
51
|
+
- Preserve status on modified tasks when subtasks still match (`done`, `manual`, `pending`).
|
|
52
52
|
- New subtasks after regen → `pending`; removed subtasks → drop from status.
|
|
53
53
|
- Never explore codebase during pure sync unless user explicitly asks for codebase analysis in the same message.
|
|
54
54
|
|
|
@@ -14,6 +14,7 @@ alwaysApply: true
|
|
|
14
14
|
| `.task-flow/.internal/tasks.json` | Definitions |
|
|
15
15
|
| `.task-flow/.internal/status.json` | Status source of truth |
|
|
16
16
|
| `.task-flow/contexts/` | Specs / mockups |
|
|
17
|
+
| `.task-flow/dev-logs/` | Manual steps + conversation log (`task-X.Y-manual.md`) |
|
|
17
18
|
| `.task-flow/guides/` | Platform guides, Graphify, standards, reports |
|
|
18
19
|
|
|
19
20
|
## Prefer skills (`.cursor/skills/`)
|
|
@@ -23,6 +24,7 @@ alwaysApply: true
|
|
|
23
24
|
| `task-flow: sync` | `@task-flow-sync` or [task-flow-sync.mdc](mdc:.cursor/rules/task-flow-sync.mdc) |
|
|
24
25
|
| `task-flow: from contexts` | `@task-flow-from-contexts` |
|
|
25
26
|
| `task-flow: run next X`, `run N` | `@task-flow-run` |
|
|
27
|
+
| `task-flow: split:N` | `@task-flow-split` |
|
|
26
28
|
| `task-flow: status` | `@task-flow-status` |
|
|
27
29
|
| `task-flow: audit` | `@task-flow-audit` |
|
|
28
30
|
| `task-flow: validate` | `@task-flow-validate` |
|
|
@@ -33,6 +35,8 @@ alwaysApply: true
|
|
|
33
35
|
|
|
34
36
|
Natural language (`work on next 3 subtasks`) = same as `task-flow: run next 3`.
|
|
35
37
|
|
|
38
|
+
**Manual subtasks:** user reports progress in chat; AI updates `.task-flow/dev-logs/` Conversation log and marks `done` when verified — no separate command.
|
|
39
|
+
|
|
36
40
|
## Git (always)
|
|
37
41
|
|
|
38
42
|
Never write git — user runs all commits. Policy: [rbin-git-policy.mdc](mdc:.cursor/rules/rbin-git-policy.mdc). Suggest via `@rbin-git`.
|
|
@@ -20,7 +20,7 @@ alwaysApply: false
|
|
|
20
20
|
|--------|--------|
|
|
21
21
|
| **New** | Generate task + 3–8 subtasks; all `pending` |
|
|
22
22
|
| **Removed** | Drop from `tasks.json`, `status.json`, `tasks.status.md` |
|
|
23
|
-
| **Modified** | Update title/description; regen subtasks; **preserve** done/pending status where possible |
|
|
23
|
+
| **Modified** | Update title/description; regen subtasks; **preserve** done/pending/**manual** status where possible |
|
|
24
24
|
| **Unchanged** | Leave task data and status as-is |
|
|
25
25
|
|
|
26
26
|
Task IDs stay sequential (1, 2, 3…) matching `tasks.input.txt` order.
|
|
@@ -38,8 +38,8 @@ Task IDs stay sequential (1, 2, 3…) matching `tasks.input.txt` order.
|
|
|
38
38
|
## 4. Align status
|
|
39
39
|
|
|
40
40
|
- `status.json` = source of truth
|
|
41
|
-
- Rebuild `tasks.status.md` checkboxes to match; **regenerate 📊 Summary** (completed / in progress / remaining counts)
|
|
42
|
-
- After regen: new subtasks → `pending`; keep `done` on matched subtasks when possible
|
|
41
|
+
- Rebuild `tasks.status.md` checkboxes to match (`[ ]` pending · `[x]` done · `[~]` manual); **regenerate 📊 Summary** (completed / in progress / 🖐️ manual / remaining counts)
|
|
42
|
+
- After regen: new subtasks → `pending`; keep `done` and `manual` on matched subtasks when possible
|
|
43
43
|
|
|
44
44
|
## 5. Principles
|
|
45
45
|
|
|
@@ -14,6 +14,7 @@ alwaysApply: false
|
|
|
14
14
|
| `task-flow: sync` | `@task-flow-sync` |
|
|
15
15
|
| `task-flow: from contexts` | `@task-flow-from-contexts` |
|
|
16
16
|
| `task-flow: run next X`, `run N` | `@task-flow-run` |
|
|
17
|
+
| `task-flow: split:N` | `@task-flow-split` |
|
|
17
18
|
| `task-flow: status` | `@task-flow-status` |
|
|
18
19
|
| `task-flow: audit` | `@task-flow-audit` |
|
|
19
20
|
| `task-flow: validate` | `@task-flow-validate` |
|
|
@@ -26,9 +26,9 @@ Use this rule for **subtask shape** when `task-flow-sync` creates or regenerates
|
|
|
26
26
|
|
|
27
27
|
**tasks.json:** `id`, `title`, `description`, `originalRequest`, `createdAt`, `subtasks[]` with `id`, `title`, `description`, `instructions`.
|
|
28
28
|
|
|
29
|
-
**status.json:** `tasks.{id}.status`, `tasks.{id}.subtasks.{subtaskId}` → `pending` | `done` | `in_progress`.
|
|
29
|
+
**status.json:** `tasks.{id}.status`, `tasks.{id}.subtasks.{subtaskId}` → `pending` | `done` | `in_progress` | `manual`.
|
|
30
30
|
|
|
31
|
-
**tasks.status.md:** banner “do not edit”; 📊 Summary;
|
|
31
|
+
**tasks.status.md:** banner “do not edit”; 📊 Summary (include 🖐️ manual count); `- [ ]` pending · `- [x]` done · `- [~]` manual (link to `.task-flow/dev-logs/task-X.Y-manual.md`).
|
|
32
32
|
|
|
33
33
|
## Rules
|
|
34
34
|
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Plans parallel task-flow run across N AIs — split:N required. Splits pending tasks into non-conflicting streams ordered by difficulty. Use for task-flow split:3, split:2, etc.
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# task-flow: split:N
|
|
7
|
+
|
|
8
|
+
**Prefer:** `@task-flow-split` · **Does not implement** — only outputs copy-paste `task-flow: run X,Y,Z` per IA tier.
|
|
9
|
+
|
|
10
|
+
**`N` is required.** Plain `task-flow: split` (without `:N`) is invalid — ask for `split:2`, `split:3`, etc.
|
|
11
|
+
|
|
12
|
+
## When to run
|
|
13
|
+
|
|
14
|
+
- `task-flow: split:3` — all pending, 3 IAs
|
|
15
|
+
- `task-flow: split:2` — all pending, 2 IAs
|
|
16
|
+
- `task-flow: split:3 50-72` — scope range, 3 IAs
|
|
17
|
+
- `task-flow: split:2 50,51,69` — scope list, 2 IAs
|
|
18
|
+
|
|
19
|
+
Natural language: `dividir pending em 3 ias` → `split:3`.
|
|
20
|
+
|
|
21
|
+
Default scope (no trailing ids): **all tasks with any pending subtask** in `status.json`.
|
|
22
|
+
|
|
23
|
+
## What it does NOT do
|
|
24
|
+
|
|
25
|
+
- Does **not** run subtasks or edit `status.json` / `tasks.json`
|
|
26
|
+
- Does **not** replace `task-flow: run` — user pastes each output line into a separate IA session
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
### 1. Parse N and scope
|
|
31
|
+
|
|
32
|
+
- **N:** integer ≥1 from `split:N` (typical 2–4)
|
|
33
|
+
- **Scope:** optional `50-72` or `50,51,69` after `split:N`
|
|
34
|
+
- If `N` missing or invalid, stop and show examples
|
|
35
|
+
|
|
36
|
+
### 2. Load pending scope
|
|
37
|
+
|
|
38
|
+
- Read `status.json` — task IDs with ≥1 `pending` or `in_progress` subtask
|
|
39
|
+
- Filter by scope if provided
|
|
40
|
+
- Read matching tasks from `tasks.json`
|
|
41
|
+
- If zero pending, report and stop
|
|
42
|
+
|
|
43
|
+
### 3. Infer touch areas (conflict detection)
|
|
44
|
+
|
|
45
|
+
Per task, infer **primary file/module areas** from subtask `instructions` and task text.
|
|
46
|
+
|
|
47
|
+
Optional: `graphify query` when `.task-flow/guides/graphify-out/graph.json` exists.
|
|
48
|
+
|
|
49
|
+
Two tasks **conflict** if they likely edit the **same files or same service/module** in parallel.
|
|
50
|
+
|
|
51
|
+
### 4. Detect dependency chains
|
|
52
|
+
|
|
53
|
+
Sequential / dependent tasks → **same stream**, **ascending ID order**. Never split a chain across IAs.
|
|
54
|
+
|
|
55
|
+
### 5. Partition into N streams
|
|
56
|
+
|
|
57
|
+
Goal: **up to N** non-overlapping streams.
|
|
58
|
+
|
|
59
|
+
1. Group conflicting tasks in the same stream
|
|
60
|
+
2. Balance into **N** streams with minimal cross-stream overlap
|
|
61
|
+
3. If pending tasks < N, output that many streams only (no empty streams)
|
|
62
|
+
|
|
63
|
+
### 6. Order streams by difficulty (IA tier)
|
|
64
|
+
|
|
65
|
+
Strongest model → **IA-1**, then IA-2 … IA-N:
|
|
66
|
+
|
|
67
|
+
| Position | Typical content |
|
|
68
|
+
|----------|-----------------|
|
|
69
|
+
| IA-1 (strongest) | Auth, migrations, Firestore rules, money/idempotency, architecture |
|
|
70
|
+
| Mid tiers | Feature work, integrations |
|
|
71
|
+
| IA-N (lightest) | UI tweaks, verification, docs, small fixes |
|
|
72
|
+
|
|
73
|
+
Within each stream: task IDs **ascending**.
|
|
74
|
+
|
|
75
|
+
### 7. Output (required format)
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
## Task Flow Split (:3)
|
|
79
|
+
|
|
80
|
+
**Pending in scope:** N tasks · **Streams:** 3
|
|
81
|
+
|
|
82
|
+
### 🟣 IA-1 — strongest (…)
|
|
83
|
+
task-flow: run 58,61,62,63,64,65,66,67,68
|
|
84
|
+
|
|
85
|
+
### 🟢 IA-2 — (…)
|
|
86
|
+
task-flow: run 50,51,59,53,60
|
|
87
|
+
|
|
88
|
+
### 🔵 IA-3 — (…)
|
|
89
|
+
task-flow: run 52,54,55,56,57,69,70,71,72
|
|
90
|
+
|
|
91
|
+
### ⚠️ Coordination
|
|
92
|
+
- …
|
|
93
|
+
|
|
94
|
+
### Next
|
|
95
|
+
Paste one block per IA session. `task-flow: status`
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
For `split:2`, use two tiers (🟣 IA-1, 🟢 IA-2). For `split:4`, add 🟡 IA-4, etc.
|
|
99
|
+
|
|
100
|
+
One **`task-flow: run id,id,id`** line per stream.
|
|
101
|
+
|
|
102
|
+
### 8. Coordination notes
|
|
103
|
+
|
|
104
|
+
Call out shared files between streams, read-after-write deps, and ordering inside each list.
|
|
105
|
+
|
|
106
|
+
## Integration
|
|
107
|
+
|
|
108
|
+
- Execute: `@task-flow-run` per stream
|
|
109
|
+
- Status: `@task-flow-status`
|
|
110
|
+
- Git: [rbin-git-policy.mdc](mdc:.cursor/rules/rbin-git-policy.mdc)
|
|
111
|
+
|
|
112
|
+
**Principle:** `split:N` = plan N parallel `run` commands; user owns N sessions; no execution.
|
|
@@ -9,11 +9,11 @@ alwaysApply: false
|
|
|
9
9
|
- When user says "task-flow: status" or "task-flow status":
|
|
10
10
|
- **READ**: `.task-flow/tasks.status.md`
|
|
11
11
|
- **DISPLAY**: Show the current status of all tasks and subtasks
|
|
12
|
-
- **FORMAT**: Display
|
|
12
|
+
- **FORMAT**: Display done `[x]`, pending `[ ]`, manual `[~]` (see `.task-flow/dev-logs/`)
|
|
13
13
|
|
|
14
14
|
- **Status Display:**
|
|
15
15
|
- Read `.task-flow/tasks.status.md` file
|
|
16
|
-
- Show tasks marked as `- [x]` (done)
|
|
16
|
+
- Show tasks marked as `- [x]` (done), `- [ ]` (pending), `- [~]` (manual — user action required)
|
|
17
17
|
- Display subtasks with their status
|
|
18
18
|
- Show progress summary if available
|
|
19
19
|
|
|
@@ -32,12 +32,13 @@ For each task/subtask in scope:
|
|
|
32
32
|
| Status | Check |
|
|
33
33
|
|--------|--------|
|
|
34
34
|
| `done` | Implementation exists and matches requirements (files, tests, docs per instructions) |
|
|
35
|
+
| `manual` | Dev-log + conversation log; not `done` until IA verifies via chat history |
|
|
35
36
|
| `pending` / `in_progress` | Whether code already partially or fully implements the subtask (status drift) |
|
|
36
37
|
|
|
37
38
|
Record:
|
|
38
39
|
|
|
39
40
|
- **Verified done** — correctly marked
|
|
40
|
-
- **False done** — marked `done` but missing or
|
|
41
|
+
- **False done** — marked `done` but missing, incomplete, or should be `manual`
|
|
41
42
|
- **Drift** — implemented in code but still `pending`
|
|
42
43
|
- **Confirmed pending** — not implemented yet (expected)
|
|
43
44
|
|
|
@@ -51,7 +52,7 @@ Find work not covered by current tasks:
|
|
|
51
52
|
|
|
52
53
|
### 4. Apply fixes (no ask — user invoked validate)
|
|
53
54
|
|
|
54
|
-
1. **Status:** set false `done` → `pending`
|
|
55
|
+
1. **Status:** set false `done` → `pending` or `manual` (with dev-log if user action required) in `status.json`
|
|
55
56
|
2. **Input:** append new lacunas as `- Description` lines to `tasks.input.txt` (append only; never remove or edit existing lines)
|
|
56
57
|
3. **Sync:** follow [task-flow-sync.mdc](mdc:.cursor/rules/task-flow-sync.mdc) — diff input, regen subtasks for new tasks, rebuild `tasks.status.md` Summary
|
|
57
58
|
4. **Never** edit `.internal/` by hand except through sync-aligned updates to `status.json` for false-done fixes before sync
|
|
@@ -5,32 +5,14 @@ alwaysApply: false
|
|
|
5
5
|
|
|
6
6
|
# Task Flow — Run (fallback)
|
|
7
7
|
|
|
8
|
-
**Prefer:** `@task-flow-run`
|
|
8
|
+
**Prefer:** `@task-flow-run` — `.claude/skills/task-flow-run/workflow.md`
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## Critical flow
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
1. **Resolve `manual` first:** read dev-logs + conversation; append Conversation log; mark `done` only when verified.
|
|
13
|
+
2. **`run next X`:** pending subtasks only; `manual` blocks until dev-log shows complete.
|
|
14
|
+
3. **Automatable** → `done`; **user must act** → `manual` + dev-log; never `done` until log confirms.
|
|
15
|
+
4. User reports manual progress **in normal chat** — no separate confirm command.
|
|
16
|
+
5. Suggest commit via `@rbin-git` — never write git.
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
|-----------|--------|
|
|
16
|
-
| `task-flow: run next X` / `run next` | Next X pending subtasks in order (default X=1) |
|
|
17
|
-
| `task-flow: run X` | All pending subtasks of task X |
|
|
18
|
-
| `task-flow: run X,Y` / `run all` | As labeled |
|
|
19
|
-
|
|
20
|
-
Natural language (`work on next 3 subtasks`, `execute all subtasks of task 2`) = same as above.
|
|
21
|
-
|
|
22
|
-
## Critical flow (each subtask)
|
|
23
|
-
|
|
24
|
-
1. Read `status.json` first; load `tasks.json` by pending task ids only if **>50 subtasks** total (see `@task-flow-run` workflow).
|
|
25
|
-
2. **`run X`:** If tasks `1..X-1` have any pending subtask, **stop** and list blockers; do not run X.
|
|
26
|
-
3. Implement per `instructions`; read `.task-flow/contexts/` when referenced; optional `graphify query` if `.task-flow/guides/graphify-out/` exists ([graphify-task-flow.mdc](mdc:.cursor/rules/graphify-task-flow.mdc)).
|
|
27
|
-
4. After each subtask: `status.json` → `done`; `tasks.status.md` → `- [x]` + regenerate 📊 Summary.
|
|
28
|
-
5. Parent task all done → mark task `done` in both files.
|
|
29
|
-
6. Suggest commit via [rbin-git-policy.mdc](mdc:.cursor/rules/rbin-git-policy.mdc) / `@rbin-git` — never write git.
|
|
30
|
-
|
|
31
|
-
If blocked: subtask `in_progress` + explain.
|
|
32
|
-
|
|
33
|
-
## More detail
|
|
34
|
-
|
|
35
|
-
- Skill workflow: `.claude/skills/task-flow-run/workflow.md`
|
|
36
|
-
- Command index: [task-flow-cursor.mdc](mdc:.cursor/rules/task-flow-cursor.mdc) · [task_execution.mdc](mdc:.cursor/rules/task_execution.mdc) (stub)
|
|
18
|
+
**Never during run:** `guides/reports/task-*-implementation.md`.
|
package/.task-flow/README.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
├── tasks.input.txt ← defina tasks (`- descrição`)
|
|
9
9
|
├── tasks.status.md ← progresso (auto; não editar)
|
|
10
10
|
├── contexts/ ← specs, mockups
|
|
11
|
+
├── dev-logs/ ← passos manuais + log da conversa (IA atualiza)
|
|
11
12
|
├── .internal/ ← tasks.json, status.json (sistema)
|
|
12
13
|
└── guides/ ← documentação e configs
|
|
13
14
|
├── AI-PLATFORMS.md
|
|
@@ -46,15 +47,23 @@ cd seu-projeto
|
|
|
46
47
|
rbin-task-flow init --graphify
|
|
47
48
|
```
|
|
48
49
|
|
|
49
|
-
### Projeto que já usa Task Flow (
|
|
50
|
+
### Projeto que já usa Task Flow (subir versão + migrar grafo)
|
|
50
51
|
|
|
51
52
|
```bash
|
|
52
53
|
npm install -g rbin-task-flow@latest
|
|
53
54
|
cd seu-projeto
|
|
54
|
-
rbin-task-flow
|
|
55
|
+
rbin-task-flow reset --keep-tasks --graphify
|
|
55
56
|
```
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
**Manter suas tasks** ao subir versão (não sobrescreve `tasks.input.txt`, `tasks.status.md` nem `.internal/`):
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npm install -g rbin-task-flow@latest
|
|
62
|
+
cd seu-projeto
|
|
63
|
+
rbin-task-flow reset --keep-tasks
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
O `reset --keep-tasks --graphify` reaplica rules/skills, move `graphify-out/` legado da raiz para `guides/graphify-out/` (se existir) e roda o extract.
|
|
58
67
|
|
|
59
68
|
### Só regerar o grafo (sem reinstall do template)
|
|
60
69
|
|
|
@@ -80,7 +89,8 @@ Guia completo: [guides/GRAPHIFY.md](guides/GRAPHIFY.md).
|
|
|
80
89
|
| `task-flow: sync` | — | Complete synchronization: adds new, removes deleted, updates modified, preserves status |
|
|
81
90
|
| `task-flow: validate` | `all` (default) · `X` · `X,Y` | Deep audit vs codebase; revert false done; append gaps to `tasks.input.txt`; sync |
|
|
82
91
|
| `task-flow: status` | — | Shows current task status |
|
|
83
|
-
| `task-flow: run` | `next X` · `X` · `X,Y` · `all` | Execute pending subtasks
|
|
92
|
+
| `task-flow: run` | `next X` · `X` · `X,Y` · `all` | Execute pending subtasks; manual → `dev-logs/`, status `manual` |
|
|
93
|
+
| `task-flow: split` | `:3` · `:2` · `:3 50-72` | Plan **N** parallel `run` lines — `:N` required |
|
|
84
94
|
| `task-flow: estimate` | `X` · `X,Y` · `all` | Time estimate for average developer pace (hours + management buffer) |
|
|
85
95
|
| `task-flow: report` | `X` · `X,Y` · `all` | Implementation report → `.task-flow/guides/reports/task-X-implementation.md` |
|
|
86
96
|
| `task-flow: audit` | — | Audits codebase against **coding standards checklist**; full doc on demand |
|
|
@@ -110,7 +120,7 @@ Complete synchronization between `tasks.input.txt` and the system:
|
|
|
110
120
|
- ✅ Adds new tasks from `tasks.input.txt`
|
|
111
121
|
- ✅ Removes tasks that were deleted from `tasks.input.txt`
|
|
112
122
|
- ✅ Updates tasks that were modified in `tasks.input.txt`
|
|
113
|
-
- ✅ Preserves status (done
|
|
123
|
+
- ✅ Preserves status (`done`, `pending`, `manual`) of existing tasks
|
|
114
124
|
- ✅ Synchronizes status between `status.json` and `tasks.status.md` (ensures they are always aligned)
|
|
115
125
|
|
|
116
126
|
### `task-flow: validate`
|
|
@@ -126,15 +136,28 @@ Audits the **entire codebase** against the **checklist** in [coding_standards.md
|
|
|
126
136
|
|
|
127
137
|
## Commands with Task ID
|
|
128
138
|
|
|
139
|
+
### `task-flow: split:N`
|
|
140
|
+
Plans **parallel work across N IAs** (`split:3`, `split:2`, …). **`:N` is required** — plain `split` is invalid.
|
|
141
|
+
|
|
142
|
+
**Examples:**
|
|
143
|
+
- `task-flow: split:3` — all pending, 3 streams
|
|
144
|
+
- `task-flow: split:2 50-72` — range, 2 streams
|
|
145
|
+
|
|
146
|
+
Output: N copy-paste lines `task-flow: run id,id,id` + coordination notes. Invoke: `@task-flow-split`.
|
|
147
|
+
|
|
129
148
|
### `task-flow: run next X`
|
|
130
|
-
Works on next X pending subtasks
|
|
149
|
+
Works on next X **pending** subtasks. Resolves `manual` first by reading dev-logs and the current conversation.
|
|
150
|
+
|
|
151
|
+
- **Fully automatable** → `done`
|
|
152
|
+
- **Needs your action** → `manual` + `.task-flow/dev-logs/task-X.Y-manual.md`
|
|
153
|
+
- You report progress **in chat** (no extra command); the AI appends the **Conversation log** and marks `done` when verified
|
|
131
154
|
|
|
132
155
|
**Examples:**
|
|
133
|
-
- `task-flow: run next 4` → Next 4 subtasks
|
|
134
|
-
- `task-flow: run next` → Next 1 subtask
|
|
156
|
+
- `task-flow: run next 4` → Next 4 pending subtasks
|
|
157
|
+
- `task-flow: run next` → Next 1 pending subtask
|
|
135
158
|
|
|
136
159
|
### `task-flow: run X` (simplified syntax)
|
|
137
|
-
Executes all pending subtasks of a specific task.
|
|
160
|
+
Executes all **pending** subtasks of a specific task. Stops if a subtask requires manual intervention.
|
|
138
161
|
|
|
139
162
|
**⚠️ Dependency Check:**
|
|
140
163
|
- Only executes if all previous tasks (1, 2, ..., X-1) are completely finished
|
|
File without changes
|
|
@@ -33,8 +33,9 @@ Os comandos `task-flow: …` são **os mesmos** em Claude Code, Cursor e Codex.
|
|
|
33
33
|
1. Definir tasks: editar `tasks.input.txt` **ou** colocar specs em `contexts/` e rodar `task-flow: from contexts`
|
|
34
34
|
2. `task-flow: sync`
|
|
35
35
|
3. `task-flow: status`
|
|
36
|
-
4. `task-flow:
|
|
37
|
-
5.
|
|
36
|
+
4. `task-flow: split:3` (opcional — N IAs em paralelo) → colar cada `run X,Y,Z` numa sessão
|
|
37
|
+
5. `task-flow: run next X` ou `task-flow: run N`
|
|
38
|
+
6. **Você** faz `git commit` (a IA só sugere)
|
|
38
39
|
|
|
39
40
|
Detalhes dos comandos: [README.md](../README.md).
|
|
40
41
|
|
|
@@ -52,10 +53,10 @@ Detalhes dos comandos: [README.md](../README.md).
|
|
|
52
53
|
| `.task-flow/guides/CURSOR.md` | — | ✅ | — |
|
|
53
54
|
| `.task-flow/guides/coding-standards-full.md` | on demand | on demand (sections only) | on demand |
|
|
54
55
|
| [OPTIMIZATION-PLAN.md](OPTIMIZATION-PLAN.md) | — | token roadmap | — |
|
|
55
|
-
| `.codex/config.toml` | — | — | ✅ (opcional, preservado no
|
|
56
|
+
| `.codex/config.toml` | — | — | ✅ (opcional, preservado no reset --keep-tasks) |
|
|
56
57
|
| `task-flow-cursor.mdc` | — | ✅ always-on | — |
|
|
57
58
|
| `rbin-git-policy.mdc` | — | ✅ always-on | — |
|
|
58
|
-
| `.claude/skills/` | ✅ (
|
|
59
|
+
| `.claude/skills/` | ✅ (11 skills) | — | — |
|
|
59
60
|
| `.cursor/skills/` | — | ✅ (espelho) | — |
|
|
60
61
|
|
|
61
62
|
Por padrão, `.claude/`, `.cursor/`, `.task-flow/`, `CLAUDE.md` e `AGENTS.md` entram no **`.gitignore`** do projeto cliente. Para versionar skills/regras com o time, ajuste o ignore — veja a seção “Versionamento” em cada guia.
|