rbin-task-flow 1.24.0 → 1.25.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/rbin-coding-standards/SKILL.md +4 -3
- package/.claude/skills/rbin-coding-standards/reference.md +3 -1
- package/.claude/skills/task-flow-audit/SKILL.md +1 -1
- package/.claude/skills/task-flow-improve-changes/SKILL.md +1 -1
- package/.claude/skills/task-flow-report/SKILL.md +2 -2
- package/.claude/skills/task-flow-sync/SKILL.md +1 -1
- package/.cursor/rules/coding_standards.mdc +15 -2
- package/.cursor/rules/graphify-task-flow.mdc +2 -2
- package/.cursor/rules/task-flow-cursor.mdc +5 -4
- package/.cursor/rules/task-flow-sync.mdc +1 -1
- package/.cursor/rules/task_analysis.mdc +1 -1
- package/.cursor/rules/task_audit.mdc +2 -2
- package/.cursor/rules/task_improve_changes.mdc +1 -1
- package/.cursor/rules/task_report.mdc +5 -5
- package/.task-flow/README.md +36 -42
- package/.task-flow/{AI-PLATFORMS.md → guides/AI-PLATFORMS.md} +5 -5
- package/.task-flow/{CODEX.md → guides/CODEX.md} +3 -3
- package/.task-flow/{CURSOR.md → guides/CURSOR.md} +2 -2
- package/.task-flow/{GRAPHIFY.md → guides/GRAPHIFY.md} +3 -3
- package/.task-flow/{OPTIMIZATION-IMPLEMENTATION-TASKS.md → guides/OPTIMIZATION-IMPLEMENTATION-TASKS.md} +5 -5
- package/.task-flow/{OPTIMIZATION-PLAN.md → guides/OPTIMIZATION-PLAN.md} +3 -3
- package/.task-flow/{docs → guides}/coding-standards-full.md +145 -0
- package/.task-flow/{platforms → guides/platforms}/claude-code.md +1 -1
- package/.task-flow/{platforms → guides/platforms}/codex.md +5 -5
- package/.task-flow/{platforms → guides/platforms}/cursor.md +2 -2
- package/.task-flow/guides/reports/.gitkeep +0 -0
- package/AGENTS.md +11 -11
- package/CLAUDE.md +6 -6
- package/README.md +7 -7
- package/lib/codex.js +1 -1
- package/lib/cursor.js +1 -1
- package/lib/graphify.js +2 -2
- package/lib/install.js +54 -0
- package/lib/report.js +1 -1
- package/lib/utils.js +2 -2
- package/package.json +1 -1
|
@@ -13,9 +13,10 @@ paths: ["src/**", "app/**"]
|
|
|
13
13
|
|
|
14
14
|
1. Apply the **checklist** in `.cursor/rules/coding_standards.mdc` (default for all implementation). Do **not** read the entire `.mdc` or full markdown into context if the checklist already covers the task.
|
|
15
15
|
2. Implement using checklist rules: `app/` thin, `features/`, `shared/`, service+use-case, RHF+zod+`Controller`, `cn()`, no `any`, no raw base UI.
|
|
16
|
-
3. **
|
|
17
|
-
4.
|
|
18
|
-
5.
|
|
16
|
+
3. **Vercel projects:** env files per **Vercel — environment variables** in `coding-standards-full.md` (§0–§8).
|
|
17
|
+
4. **Only if ambiguous** (Nest gateways, DataHandler, route groups, naming edge case): open **one or two sections** of `.task-flow/guides/coding-standards-full.md` — never paste or load the whole file.
|
|
18
|
+
5. If `graphify-out/graph.json` exists, `graphify query` before choosing file paths for new code.
|
|
19
|
+
6. No explanatory code comments; use `dev-logs/` for non-obvious design notes.
|
|
19
20
|
|
|
20
21
|
## Token discipline
|
|
21
22
|
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
| Doc | Path | When |
|
|
6
6
|
|-----|------|------|
|
|
7
7
|
| **Checklist** (default) | `.cursor/rules/coding_standards.mdc` | Every implementation; glob on `src/**`, `app/**` in Cursor |
|
|
8
|
-
| **Full reference** (sections only) | `.task-flow/
|
|
8
|
+
| **Full reference** (sections only) | `.task-flow/guides/coding-standards-full.md` | Nest/Prisma detail, long examples, ESLint table, DataHandler, providers |
|
|
9
|
+
| **Vercel `.env`** | `coding-standards-full.md` § Vercel | Projects on Vercel — 3 mirrored env files + sync scripts |
|
|
9
10
|
|
|
10
11
|
## Checklist essentials
|
|
11
12
|
|
|
@@ -40,3 +41,4 @@
|
|
|
40
41
|
| Context / Auth Hook | Auth provider pattern |
|
|
41
42
|
| Testing | E2E placement |
|
|
42
43
|
| Critical Rules | Final verification |
|
|
44
|
+
| Vercel — environment variables | `.env` setup on Vercel deploys → open this section in full doc |
|
|
@@ -7,7 +7,7 @@ disable-model-invocation: true
|
|
|
7
7
|
# Task Flow — Audit
|
|
8
8
|
|
|
9
9
|
1. Scan project structure and `package.json`.
|
|
10
|
-
2. Score categories vs `.cursor/rules/coding_standards.mdc` checklist (Full / Partial / Missing). Use `.task-flow/
|
|
10
|
+
2. Score categories vs `.cursor/rules/coding_standards.mdc` checklist (Full / Partial / Missing). Use `.task-flow/guides/coding-standards-full.md` only for deep dives — not the whole file.
|
|
11
11
|
3. Present table and incremental improvement options.
|
|
12
12
|
4. **Ask** user what to adopt; never impose refactors.
|
|
13
13
|
5. Generate task lines for selected items only if user confirms.
|
|
@@ -8,7 +8,7 @@ disable-model-invocation: true
|
|
|
8
8
|
|
|
9
9
|
1. Run `git diff --name-only HEAD` (read-only git).
|
|
10
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/
|
|
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
12
|
4. Present findings; ask what to fix.
|
|
13
13
|
5. Does **not** run lint/build — use `/task-flow-check` separately.
|
|
14
14
|
|
|
@@ -9,7 +9,7 @@ paths: [".task-flow/**"]
|
|
|
9
9
|
|
|
10
10
|
1. Verify task X is fully `done` in `status.json` (warn if partial).
|
|
11
11
|
2. Read `tasks.json`; analyze related code changes (read-only git ok).
|
|
12
|
-
3. Write `.task-flow/
|
|
13
|
-
4. Create `.task-flow/
|
|
12
|
+
3. Write `.task-flow/guides/reports/task-X-implementation.md` using project template.
|
|
13
|
+
4. Create `.task-flow/guides/reports/` if missing.
|
|
14
14
|
|
|
15
15
|
Reference: `.cursor/rules/task_report.mdc`
|
|
@@ -12,7 +12,7 @@ paths: [".task-flow/**"]
|
|
|
12
12
|
1. Read `.task-flow/tasks.input.txt` (only lines starting with `- `).
|
|
13
13
|
2. Read `.task-flow/.internal/tasks.json` and `status.json` if they exist.
|
|
14
14
|
3. Compare by `originalRequest`: new, removed, modified, unchanged tasks.
|
|
15
|
-
4. **New:** generate subtasks (3–8 each), add pending status, update `tasks.status.md`. Subtask instructions: follow **checklist** in `.cursor/rules/coding_standards.mdc` only — not `.task-flow/
|
|
15
|
+
4. **New:** generate subtasks (3–8 each), add pending status, update `tasks.status.md`. Subtask instructions: follow **checklist** in `.cursor/rules/coding_standards.mdc` only — not `.task-flow/guides/coding-standards-full.md`.
|
|
16
16
|
5. **Removed:** delete from all three stores.
|
|
17
17
|
6. **Modified:** update title/description, regenerate subtasks, **preserve** done/pending status where possible.
|
|
18
18
|
7. **Unchanged:** leave task data and status as-is.
|
|
@@ -6,7 +6,7 @@ alwaysApply: false
|
|
|
6
6
|
|
|
7
7
|
# Coding Standards — Checklist
|
|
8
8
|
|
|
9
|
-
Apply when implementing Task Flow subtasks or feature code (this file is the **checklist**). For workflows and section index: invoke `@rbin-coding-standards` (`disable-model-invocation: true` — not auto). **Full guide:** [.task-flow/
|
|
9
|
+
Apply when implementing Task Flow subtasks or feature code (this file is the **checklist**). For workflows and section index: invoke `@rbin-coding-standards` (`disable-model-invocation: true` — not auto). **Full guide:** [.task-flow/guides/coding-standards-full.md](mdc:.task-flow/guides/coding-standards-full.md) — **sections only**; never paste entire file into chat.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -84,9 +84,21 @@ src/
|
|
|
84
84
|
|
|
85
85
|
---
|
|
86
86
|
|
|
87
|
+
## Vercel — `.env` (when project deploys on Vercel)
|
|
88
|
+
|
|
89
|
+
Follow **Vercel — environment variables** in [coding-standards-full.md](mdc:.task-flow/guides/coding-standards-full.md) (§0–§8):
|
|
90
|
+
|
|
91
|
+
- **3 mirrored files:** `.env.example` (committed, empty values), `.env.local` (dev), `.env.production` (synced to Vercel).
|
|
92
|
+
- Same keys, **alphabetical order**, one var per line — no section comments breaking alignment.
|
|
93
|
+
- `.gitignore`: `.env`, `.env.*`, `!.env.example`.
|
|
94
|
+
- Scripts: `scripts/env-files-check.sh`, `scripts/vercel-env-sync.sh` (full content in full doc §5–§6).
|
|
95
|
+
- Audit orphan vars before aligning; classify `NEXT_PUBLIC_*`/flags as plaintext, rest as secret on Vercel.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
87
99
|
## Audit / sync
|
|
88
100
|
|
|
89
|
-
- **`task-flow: audit`:** score against this checklist; open [coding-standards-full.md](mdc:.task-flow/
|
|
101
|
+
- **`task-flow: audit`:** score against this checklist; open [coding-standards-full.md](mdc:.task-flow/guides/coding-standards-full.md) only for deep dives or user-requested depth.
|
|
90
102
|
- **`task-flow: sync`:** subtask instructions follow checklist patterns (structure, naming, service+use-case) — not full doc.
|
|
91
103
|
|
|
92
104
|
---
|
|
@@ -97,4 +109,5 @@ src/
|
|
|
97
109
|
|------|-----|
|
|
98
110
|
| Implementing code | `@rbin-coding-standards` |
|
|
99
111
|
| Full examples / Nest / gateways | Sections of `coding-standards-full.md` |
|
|
112
|
+
| Vercel `.env` setup | `coding-standards-full.md` § Vercel |
|
|
100
113
|
| Audit all categories | `@task-flow-audit` |
|
|
@@ -12,7 +12,7 @@ alwaysApply: false
|
|
|
12
12
|
- **`task-flow: think`:** Optional `graphify query` for gap analysis on large repos.
|
|
13
13
|
- **`task-flow: review X`:** Optional `graphify affected "<symbol>"` to verify impact surface.
|
|
14
14
|
- **`task-flow: validate`:** Optional `graphify query` per task area before verifying implementation; then append lacunas + sync per `task_validate.mdc`.
|
|
15
|
-
- **`task-flow: audit`:** Graphify is structural only; scoring uses [coding_standards.mdc](mdc:.cursor/rules/coding_standards.mdc) checklist. Deep dive: sections of [coding-standards-full.md](mdc:.task-flow/
|
|
15
|
+
- **`task-flow: audit`:** Graphify is structural only; scoring uses [coding_standards.mdc](mdc:.cursor/rules/coding_standards.mdc) checklist. Deep dive: sections of [coding-standards-full.md](mdc:.task-flow/guides/coding-standards-full.md) only if user asks for depth.
|
|
16
16
|
|
|
17
17
|
- **When NOT to use Graphify:**
|
|
18
18
|
- `task-flow: sync`, `status`, `estimate`, `report`, `generate flow` — only `.task-flow/` files.
|
|
@@ -26,7 +26,7 @@ alwaysApply: false
|
|
|
26
26
|
- **CLI (project root):**
|
|
27
27
|
- Build graph: `graphify extract . --backend claude-cli` or `rbin-task-flow init --graphify` (re-run after large refactors).
|
|
28
28
|
- Query: `graphify query "question"` · `graphify affected "node"`.
|
|
29
|
-
- Guide: [.task-flow/GRAPHIFY.md](mdc:.task-flow/GRAPHIFY.md)
|
|
29
|
+
- Guide: [.task-flow/guides/GRAPHIFY.md](mdc:.task-flow/guides/GRAPHIFY.md)
|
|
30
30
|
|
|
31
31
|
- **Principle:**
|
|
32
32
|
> **Task Flow decides what to do; Graphify helps find where in the code — only during implementation and exploration commands.**
|
|
@@ -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/guides/` | Platform guides, Graphify, standards, reports |
|
|
17
18
|
|
|
18
19
|
## Prefer skills (`.cursor/skills/`)
|
|
19
20
|
|
|
@@ -43,10 +44,10 @@ Never write git — user runs all commits. Policy: [rbin-git-policy.mdc](mdc:.cu
|
|
|
43
44
|
|
|
44
45
|
## Graphify (optional)
|
|
45
46
|
|
|
46
|
-
On `run` / `think`, if `graphify-out/` exists: `graphify query` before repo-wide grep. Rule: `graphify-task-flow`. Guide: `.task-flow/GRAPHIFY.md`.
|
|
47
|
+
On `run` / `think`, if `graphify-out/` exists: `graphify query` before repo-wide grep. Rule: `graphify-task-flow`. Guide: `.task-flow/guides/GRAPHIFY.md`.
|
|
47
48
|
|
|
48
49
|
## More detail
|
|
49
50
|
|
|
50
|
-
- Workflows: `.task-flow/CURSOR.md`
|
|
51
|
-
- Full guide: `.task-flow/platforms/cursor.md`
|
|
52
|
-
- Codex parity: `.task-flow/CODEX.md`
|
|
51
|
+
- Workflows: `.task-flow/guides/CURSOR.md`
|
|
52
|
+
- Full guide: `.task-flow/guides/platforms/cursor.md`
|
|
53
|
+
- Codex parity: `.task-flow/guides/CODEX.md`
|
|
@@ -30,7 +30,7 @@ Task IDs stay sequential (1, 2, 3…) matching `tasks.input.txt` order.
|
|
|
30
30
|
- `originalRequest`: exact input line; `createdAt`: ISO 8601 for new tasks
|
|
31
31
|
- 3–8 subtasks: title, description, instructions (3–5 steps)
|
|
32
32
|
- Contexts: keyword match or `task-flow-screen file.ext` → `.task-flow/contexts/file.ext`
|
|
33
|
-
- Subtask instructions: **checklist** in [coding_standards.mdc](mdc:.cursor/rules/coding_standards.mdc) only — not [coding-standards-full.md](mdc:.task-flow/
|
|
33
|
+
- Subtask instructions: **checklist** in [coding_standards.mdc](mdc:.cursor/rules/coding_standards.mdc) only — not [coding-standards-full.md](mdc:.task-flow/guides/coding-standards-full.md)
|
|
34
34
|
- More templates: [task_generation.mdc](mdc:.cursor/rules/task_generation.mdc)
|
|
35
35
|
|
|
36
36
|
**Sync rules:** no codebase exploration; no questions; do not fill `tasks.flow.md` (only `generate flow`).
|
|
@@ -35,7 +35,7 @@ User says `task-flow: think`, `suggest tasks`, `check for new tasks`, `analyze c
|
|
|
35
35
|
|
|
36
36
|
## Optional roadmap
|
|
37
37
|
|
|
38
|
-
For package improvements see [.task-flow/OPTIMIZATION-PLAN.md](mdc:.task-flow/OPTIMIZATION-PLAN.md) — not part of think unless user asks.
|
|
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
39
|
|
|
40
40
|
## Integration
|
|
41
41
|
|
|
@@ -5,7 +5,7 @@ alwaysApply: false
|
|
|
5
5
|
|
|
6
6
|
# task-flow: audit
|
|
7
7
|
|
|
8
|
-
When the user runs `task-flow: audit`, perform a non-destructive analysis against the **checklist** in [coding_standards.mdc](mdc:.cursor/rules/coding_standards.mdc). For deep architecture or examples, read only relevant sections of [coding-standards-full.md](mdc:.task-flow/
|
|
8
|
+
When the user runs `task-flow: audit`, perform a non-destructive analysis against the **checklist** in [coding_standards.mdc](mdc:.cursor/rules/coding_standards.mdc). For deep architecture or examples, read only relevant sections of [coding-standards-full.md](mdc:.task-flow/guides/coding-standards-full.md) — do not load the entire file unless the user asks for depth.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -36,7 +36,7 @@ Scan the codebase to understand:
|
|
|
36
36
|
|
|
37
37
|
### Step 2 — Score each category
|
|
38
38
|
|
|
39
|
-
Score using the **checklist** in [coding_standards.mdc](mdc:.cursor/rules/coding_standards.mdc). For a category that needs examples (Nest gateways, DataHandler, long patterns), read **one section** of [coding-standards-full.md](mdc:.task-flow/
|
|
39
|
+
Score using the **checklist** in [coding_standards.mdc](mdc:.cursor/rules/coding_standards.mdc). For a category that needs examples (Nest gateways, DataHandler, long patterns), read **one section** of [coding-standards-full.md](mdc:.task-flow/guides/coding-standards-full.md) — not the whole file unless the user requests depth.
|
|
40
40
|
|
|
41
41
|
For each category below, rate adherence: **Full / Partial / Missing**
|
|
42
42
|
|
|
@@ -7,7 +7,7 @@ alwaysApply: false
|
|
|
7
7
|
|
|
8
8
|
When the user runs `task-flow: improve changes`:
|
|
9
9
|
|
|
10
|
-
1. **Audit current changes only**: Do the **same as** [task-flow: audit](mdc:.cursor/rules/task_audit.mdc) (score against the [coding_standards.mdc](mdc:.cursor/rules/coding_standards.mdc) checklist; [full doc](mdc:.task-flow/
|
|
10
|
+
1. **Audit current changes only**: Do the **same as** [task-flow: audit](mdc:.cursor/rules/task_audit.mdc) (score against the [coding_standards.mdc](mdc:.cursor/rules/coding_standards.mdc) checklist; [full doc](mdc:.task-flow/guides/coding-standards-full.md) only if needed), but **restricted to files that were changed and not yet committed**.
|
|
11
11
|
2. **Do not run project checks here**: Lint fix and build now belong to [task-flow: check](mdc:.cursor/rules/task_check.mdc).
|
|
12
12
|
|
|
13
13
|
---
|
|
@@ -12,7 +12,7 @@ alwaysApply: false
|
|
|
12
12
|
- **READ**: `.task-flow/.internal/status.json` to verify task is completed
|
|
13
13
|
- **ANALYZE**: Codebase changes related to the task (git history, file changes)
|
|
14
14
|
- **GENERATE**: Markdown report documenting what was implemented
|
|
15
|
-
- **SAVE**: Report to `.task-flow/
|
|
15
|
+
- **SAVE**: Report to `.task-flow/guides/reports/task-X-implementation.md`
|
|
16
16
|
|
|
17
17
|
- **Report Generation Rules:**
|
|
18
18
|
1. **Verify Completion**: Task must be marked as "done" in status.json (all subtasks completed)
|
|
@@ -23,9 +23,9 @@ alwaysApply: false
|
|
|
23
23
|
- Code changes summary
|
|
24
24
|
- Testing information (if applicable)
|
|
25
25
|
- Notes and considerations
|
|
26
|
-
3. **File Location**: `.task-flow/
|
|
26
|
+
3. **File Location**: `.task-flow/guides/reports/task-X-implementation.md`
|
|
27
27
|
4. **File Naming**: `task-{taskId}-implementation.md` (e.g., `task-1-implementation.md`)
|
|
28
|
-
5. **Directory Creation**: Create `.task-flow/
|
|
28
|
+
5. **Directory Creation**: Create `.task-flow/guides/reports/` if it doesn't exist
|
|
29
29
|
|
|
30
30
|
- **Report Template:**
|
|
31
31
|
```markdown
|
|
@@ -93,7 +93,7 @@ alwaysApply: false
|
|
|
93
93
|
2. Verify task 1 is completed
|
|
94
94
|
3. Analyze codebase for changes related to task 1
|
|
95
95
|
4. Generate markdown report
|
|
96
|
-
5. Save to .task-flow/
|
|
96
|
+
5. Save to .task-flow/guides/reports/task-1-implementation.md
|
|
97
97
|
6. Show confirmation message
|
|
98
98
|
```
|
|
99
99
|
|
|
@@ -105,7 +105,7 @@ alwaysApply: false
|
|
|
105
105
|
- **Integration:**
|
|
106
106
|
- Works with [task-flow-cursor.mdc](mdc:.cursor/rules/task-flow-cursor.mdc) / `@task-flow-report`
|
|
107
107
|
- Uses task data from `.task-flow/.internal/tasks.json` and `.task-flow/.internal/status.json`
|
|
108
|
-
- Reports are stored in `.task-flow/
|
|
108
|
+
- Reports are stored in `.task-flow/guides/reports/` directory
|
|
109
109
|
- Can reference git history for implementation details
|
|
110
110
|
|
|
111
111
|
- **Principle:**
|
package/.task-flow/README.md
CHANGED
|
@@ -1,19 +1,37 @@
|
|
|
1
1
|
# RBIN Task Flow - Quick Commands
|
|
2
2
|
|
|
3
|
+
## Layout
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
.task-flow/
|
|
7
|
+
├── README.md ← você está aqui
|
|
8
|
+
├── tasks.input.txt ← defina tasks (`- descrição`)
|
|
9
|
+
├── tasks.status.md ← progresso (auto; não editar)
|
|
10
|
+
├── tasks.flow.md ← deps/horas (task-flow: generate flow)
|
|
11
|
+
├── contexts/ ← specs, mockups
|
|
12
|
+
├── .internal/ ← tasks.json, status.json (sistema)
|
|
13
|
+
└── guides/ ← documentação e configs
|
|
14
|
+
├── AI-PLATFORMS.md
|
|
15
|
+
├── GRAPHIFY.md
|
|
16
|
+
├── CODEX.md · CURSOR.md
|
|
17
|
+
├── coding-standards-full.md ← inclui padrão .env Vercel (§ Vercel)
|
|
18
|
+
├── platforms/ ← Claude, Cursor, Codex
|
|
19
|
+
└── reports/ ← task-X-implementation.md
|
|
20
|
+
```
|
|
21
|
+
|
|
3
22
|
**Optimize by AI platform:**
|
|
4
23
|
|
|
5
24
|
| Platform | Guide |
|
|
6
25
|
|----------|--------|
|
|
7
|
-
| Index | [AI-PLATFORMS.md](AI-PLATFORMS.md) |
|
|
8
|
-
| Claude Code | [platforms/claude-code.md](platforms/claude-code.md) |
|
|
9
|
-
| Cursor | [platforms/cursor.md](platforms/cursor.md) |
|
|
10
|
-
| Codex | [platforms/codex.md](platforms/codex.md) |
|
|
11
|
-
| Graphify + Task Flow | [GRAPHIFY.md](GRAPHIFY.md) |
|
|
12
|
-
| Codex | [CODEX.md](CODEX.md)
|
|
13
|
-
| Cursor
|
|
14
|
-
| Otimização (tokens
|
|
15
|
-
|
|
|
16
|
-
| Coding standards (full, on demand) | [docs/coding-standards-full.md](docs/coding-standards-full.md) |
|
|
26
|
+
| Index | [guides/AI-PLATFORMS.md](guides/AI-PLATFORMS.md) |
|
|
27
|
+
| Claude Code | [guides/platforms/claude-code.md](guides/platforms/claude-code.md) |
|
|
28
|
+
| Cursor | [guides/platforms/cursor.md](guides/platforms/cursor.md) |
|
|
29
|
+
| Codex | [guides/platforms/codex.md](guides/platforms/codex.md) |
|
|
30
|
+
| Graphify + Task Flow | [guides/GRAPHIFY.md](guides/GRAPHIFY.md) |
|
|
31
|
+
| Codex workflows | [guides/CODEX.md](guides/CODEX.md) |
|
|
32
|
+
| Cursor quick ref | [guides/CURSOR.md](guides/CURSOR.md) |
|
|
33
|
+
| Otimização (tokens) | [guides/OPTIMIZATION-PLAN.md](guides/OPTIMIZATION-PLAN.md) |
|
|
34
|
+
| Coding standards (full) | [guides/coding-standards-full.md](guides/coding-standards-full.md) (Vercel `.env` no topo) |
|
|
17
35
|
|
|
18
36
|
## 🚀 Quick Commands
|
|
19
37
|
|
|
@@ -21,13 +39,13 @@
|
|
|
21
39
|
|---------|-------------|
|
|
22
40
|
| `task-flow: sync` | Complete synchronization: adds new, removes deleted, updates modified, preserves status |
|
|
23
41
|
| `task-flow: think` | Analyzes code and suggests new tasks |
|
|
42
|
+
| `task-flow: validate` | Deep audit vs codebase; revert false done; append gaps to `tasks.input.txt`; sync |
|
|
24
43
|
| `task-flow: status` | Shows current task status |
|
|
25
44
|
| `task-flow: run next X` | Works on next X subtasks (e.g., `task-flow: run next 4`) |
|
|
26
45
|
| `task-flow: run X` | Executes all pending subtasks of task X (e.g., `task-flow: run 1`) |
|
|
27
46
|
| `task-flow: run X,Y` | Executes multiple tasks (e.g., `task-flow: run 10,11`) |
|
|
28
47
|
| `task-flow: run all` | Executes all tasks |
|
|
29
48
|
| `task-flow: review X` | Reviews specific task(s) (e.g., `task-flow: review 1` or `task-flow: review 10,11` or `task-flow: review all`) |
|
|
30
|
-
| `task-flow: validate` | Deep-validates tasks vs codebase, reverts false done, appends gaps to `tasks.input.txt`, syncs (default: all) |
|
|
31
49
|
| `task-flow: refactor X` | Refactors specific task(s) (e.g., `task-flow: refactor 1` or `task-flow: refactor 10,11` or `task-flow: refactor all`) |
|
|
32
50
|
| `task-flow: estimate X` | Estimates time for task X (e.g., `task-flow: estimate 1` or `task-flow: estimate 10,11`) |
|
|
33
51
|
| `task-flow: report X` | Generates implementation report for task X (e.g., `task-flow: report 1` or `task-flow: report 10,11`) |
|
|
@@ -54,11 +72,14 @@ Complete synchronization between `tasks.input.txt` and the system:
|
|
|
54
72
|
### `task-flow: think`
|
|
55
73
|
Analyzes code and suggests new tasks. Asks before adding to `tasks.input.txt`.
|
|
56
74
|
|
|
75
|
+
### `task-flow: validate`
|
|
76
|
+
Deep validation: checks subtasks against the codebase, reverts false `done`, appends lacunas to `tasks.input.txt`, and syncs. Invoke: `@task-flow-validate` / `/task-flow-validate`.
|
|
77
|
+
|
|
57
78
|
### `task-flow: status`
|
|
58
79
|
Shows current status of tasks and subtasks from the `tasks.status.md` file.
|
|
59
80
|
|
|
60
81
|
### `task-flow: audit`
|
|
61
|
-
Audits the **entire codebase** against the **checklist** in [coding_standards.mdc](
|
|
82
|
+
Audits the **entire codebase** against the **checklist** in [coding_standards.mdc](../.cursor/rules/coding_standards.mdc). Deep reference: [guides/coding-standards-full.md](guides/coding-standards-full.md) (sections only, on demand). Non-destructive: reports gaps and suggests incremental improvements; the user chooses what to adopt. See [task_audit.mdc](../.cursor/rules/task_audit.mdc) for the full flow.
|
|
62
83
|
|
|
63
84
|
### `task-flow: check`
|
|
64
85
|
Runs **lint fix** and **build** for the project. Check `package.json` for a lint-with-fix script (e.g. `lint:fix`, `lint -- --fix`) and a build script; run lint fix first, fix any warnings or errors, then run build and fix until it passes. Use before committing or before `task-flow: improve changes` to ensure the project is clean.
|
|
@@ -102,16 +123,6 @@ Reviews specific task(s) marked as "done" to verify they are actually completed.
|
|
|
102
123
|
- `task-flow: review 10,11` → Reviews tasks 10 and 11
|
|
103
124
|
- `task-flow: review all` → Reviews all tasks
|
|
104
125
|
|
|
105
|
-
### `task-flow: validate`
|
|
106
|
-
Deep validation: checks all subtasks (done and pending) against the codebase, reverts falsely marked `done`, discovers lacunas (missing tests, TODOs, incomplete work), **appends** them to `tasks.input.txt`, and runs sync. Unlike `think` (asks before add) or `review` (done only, asks before revert).
|
|
107
|
-
|
|
108
|
-
**Examples:**
|
|
109
|
-
- `task-flow: validate` → Validates all tasks
|
|
110
|
-
- `task-flow: validate 1` → Validates task 1 only
|
|
111
|
-
- `task-flow: validate 2,3` → Validates tasks 2 and 3
|
|
112
|
-
|
|
113
|
-
**Invoke:** `@task-flow-validate` (Cursor) · `/task-flow-validate` (Claude)
|
|
114
|
-
|
|
115
126
|
### `task-flow: refactor X`
|
|
116
127
|
Refactors code from specific task(s). Removes explanatory comments, improves code without changing functionality.
|
|
117
128
|
|
|
@@ -139,25 +150,8 @@ Populates `tasks.flow.md` with: (1) task dependencies (for parallelization), (2)
|
|
|
139
150
|
### `task-flow: report X` (simplified syntax)
|
|
140
151
|
Generates a detailed implementation report for completed task(s) in Markdown format.
|
|
141
152
|
|
|
142
|
-
**
|
|
143
|
-
- Task overview and completion status
|
|
144
|
-
- List of completed subtasks
|
|
145
|
-
- Files created and modified (detected from git history)
|
|
146
|
-
- Code change summaries with analysis
|
|
147
|
-
- Task creation and completion dates
|
|
148
|
-
|
|
149
|
-
**Report location:** `.task-flow/docs/task-X-implementation.md`
|
|
153
|
+
**Output:** `.task-flow/guides/reports/task-X-implementation.md`
|
|
150
154
|
|
|
151
155
|
**Examples:**
|
|
152
|
-
- `task-flow: report 1` →
|
|
153
|
-
- `task-flow: report 10,11` →
|
|
154
|
-
- `task-flow: report all` → Generates reports for all tasks
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## Files
|
|
159
|
-
|
|
160
|
-
- `.task-flow/tasks.input.txt` - Edit tasks here (format: `- Task description`)
|
|
161
|
-
- `.task-flow/tasks.status.md` - ⚠️ **DO NOT EDIT** - Automatically updated by AI
|
|
162
|
-
- `.task-flow/tasks.flow.md` - Dependencies, estimated hours, and model recommendations (populated by `task-flow: generate flow`)
|
|
163
|
-
- `.task-flow/.internal/` - ⚠️ **IGNORE** - Internal system files (no need to read or edit)
|
|
156
|
+
- `task-flow: report 1` → Report for task 1
|
|
157
|
+
- `task-flow: report 10,11` → Reports for tasks 10 and 11
|
|
@@ -10,7 +10,7 @@ Os comandos `task-flow: …` são **os mesmos** em Claude Code, Cursor e Codex.
|
|
|
10
10
|
|------------|------|------------------|----------------------|
|
|
11
11
|
| **Claude Code** | [platforms/claude-code.md](platforms/claude-code.md) | `CLAUDE.md` + `.claude/skills/*/SKILL.md` | **Skills no `init`** — `/task-flow-run`, etc. |
|
|
12
12
|
| **Cursor** | [platforms/cursor.md](platforms/cursor.md) | `task-flow-cursor.mdc` + `rbin-git-policy.mdc` + skills | **Otimizado v1.23** — 2 always-on + `@task-flow-*` |
|
|
13
|
-
| **OpenAI Codex** | [platforms/codex.md](platforms/codex.md) | `AGENTS.md` + `.task-flow/CODEX.md` + `.codex/config.toml` | **Otimizado v1.21** — sync/run no AGENTS.md |
|
|
13
|
+
| **OpenAI Codex** | [platforms/codex.md](platforms/codex.md) | `AGENTS.md` + `.task-flow/guides/CODEX.md` + `.codex/config.toml` | **Otimizado v1.21** — sync/run no AGENTS.md |
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
@@ -37,7 +37,7 @@ Os comandos `task-flow: …` são **os mesmos** em Claude Code, Cursor e Codex.
|
|
|
37
37
|
5. `task-flow: check`
|
|
38
38
|
6. **Você** faz `git commit` (a IA só sugere)
|
|
39
39
|
|
|
40
|
-
Detalhes dos comandos: [README.md](README.md).
|
|
40
|
+
Detalhes dos comandos: [README.md](../README.md).
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
@@ -49,9 +49,9 @@ Detalhes dos comandos: [README.md](README.md).
|
|
|
49
49
|
| `.cursor/rules/` | leitura manual | ✅ auto | leitura manual |
|
|
50
50
|
| `CLAUDE.md` | ✅ | — | — |
|
|
51
51
|
| `AGENTS.md` | — | — | ✅ |
|
|
52
|
-
| `.task-flow/CODEX.md` | — | — | ✅ |
|
|
53
|
-
| `.task-flow/CURSOR.md` | — | ✅ | — |
|
|
54
|
-
| `.task-flow/
|
|
52
|
+
| `.task-flow/guides/CODEX.md` | — | — | ✅ |
|
|
53
|
+
| `.task-flow/guides/CURSOR.md` | — | ✅ | — |
|
|
54
|
+
| `.task-flow/guides/coding-standards-full.md` | on demand | on demand (sections only) | on demand |
|
|
55
55
|
| [OPTIMIZATION-PLAN.md](OPTIMIZATION-PLAN.md) | — | token roadmap | — |
|
|
56
56
|
| `.codex/config.toml` | — | — | ✅ (opcional, preservado no update) |
|
|
57
57
|
| `task-flow-cursor.mdc` | — | ✅ always-on | — |
|
|
@@ -120,7 +120,7 @@ Rule: `.cursor/rules/task_estimate.mdc`
|
|
|
120
120
|
|
|
121
121
|
## task-flow: report X
|
|
122
122
|
|
|
123
|
-
Verify task done; write `.task-flow/
|
|
123
|
+
Verify task done; write `.task-flow/guides/reports/task-X-implementation.md`.
|
|
124
124
|
|
|
125
125
|
Rule: `.cursor/rules/task_report.mdc`
|
|
126
126
|
|
|
@@ -136,13 +136,13 @@ Rule: `.cursor/rules/task_generate_flow.mdc`
|
|
|
136
136
|
|
|
137
137
|
## Implementing code (any subtask)
|
|
138
138
|
|
|
139
|
-
Follow the checklist in `.cursor/rules/coding_standards.mdc`. For examples/Nest: read sections of `.task-flow/
|
|
139
|
+
Follow the checklist in `.cursor/rules/coding_standards.mdc`. For examples/Nest: read sections of `.task-flow/guides/coding-standards-full.md` only.
|
|
140
140
|
|
|
141
141
|
---
|
|
142
142
|
|
|
143
143
|
## Graphify (optional)
|
|
144
144
|
|
|
145
|
-
Only during `run` / `think` when `graphify-out/` exists. See `.task-flow/GRAPHIFY.md`. Does not replace status updates.
|
|
145
|
+
Only during `run` / `think` when `graphify-out/` exists. See `.task-flow/guides/GRAPHIFY.md`. Does not replace status updates.
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
@@ -43,7 +43,7 @@ Verify: `rg 'alwaysApply: true' .cursor/rules` → only the two files above.
|
|
|
43
43
|
| **Glob** | `task-flow-sync`, `task_generation` (`.task-flow/**`), `coding_standards` (`src/**`, `app/**`), `code_comments` | Matching paths in chat |
|
|
44
44
|
| **Manual** | `@cursor_rules`, `@self_improve`, `@task_report`, legacy `git_control` | You `@`-mention only (no `description` auto-match) |
|
|
45
45
|
|
|
46
|
-
**Coding standards:** checklist in `coding_standards.mdc` (glob). Full reference: `.task-flow/
|
|
46
|
+
**Coding standards:** checklist in `coding_standards.mdc` (glob). Full reference: `.task-flow/guides/coding-standards-full.md` — **sections only**, never whole file.
|
|
47
47
|
|
|
48
48
|
If a command fails to trigger, use **`@task-flow-*`** explicitly.
|
|
49
49
|
|
|
@@ -90,6 +90,6 @@ Only during `run` / `think` when `graphify-out/` exists. Does not replace Task F
|
|
|
90
90
|
## References
|
|
91
91
|
|
|
92
92
|
- [platforms/cursor.md](platforms/cursor.md) — full guide
|
|
93
|
-
- [README.md](README.md) — all commands
|
|
93
|
+
- [README.md](../README.md) — all commands
|
|
94
94
|
- [AI-PLATFORMS.md](AI-PLATFORMS.md) — install matrix
|
|
95
95
|
- [Cursor Rules docs](https://cursor.com/docs/context/rules)
|
|
@@ -69,7 +69,7 @@ task-flow: run next 2 — se graphify-out existir, graphify query "<módulo da s
|
|
|
69
69
|
## Claude Code
|
|
70
70
|
|
|
71
71
|
- Use **`/graphify`** ou `graphify query` **durante** `task-flow: run`, não no lugar de atualizar status.
|
|
72
|
-
- Se já rodou `graphify claude install` no passado: o hook PreToolUse pode ajudar; evite duplicar parágrafos longos no `CLAUDE.md` — priorize [
|
|
72
|
+
- Se já rodou `graphify claude install` no passado: o hook PreToolUse pode ajudar; evite duplicar parágrafos longos no `CLAUDE.md` — priorize [platforms/claude-code.md](platforms/claude-code.md).
|
|
73
73
|
|
|
74
74
|
## Cursor
|
|
75
75
|
|
|
@@ -79,7 +79,7 @@ task-flow: run next 2 — se graphify-out existir, graphify query "<módulo da s
|
|
|
79
79
|
## Codex
|
|
80
80
|
|
|
81
81
|
- Graphify não entra no `AGENTS.md` automaticamente (limite 32 KiB).
|
|
82
|
-
- No prompt: cite `.task-flow/GRAPHIFY.md` + `graphify query` ao executar `run`.
|
|
82
|
+
- No prompt: cite `.task-flow/guides/GRAPHIFY.md` + `graphify query` ao executar `run`.
|
|
83
83
|
|
|
84
84
|
---
|
|
85
85
|
|
|
@@ -109,5 +109,5 @@ task-flow: run next 2 — se graphify-out existir, graphify query "<módulo da s
|
|
|
109
109
|
## Referências
|
|
110
110
|
|
|
111
111
|
- [AI-PLATFORMS.md](AI-PLATFORMS.md) — índice Claude / Cursor / Codex
|
|
112
|
-
- [README.md](README.md) — comandos Task Flow
|
|
112
|
+
- [README.md](../README.md) — comandos Task Flow
|
|
113
113
|
- Graphify CLI: `graphify --help`
|
|
@@ -92,7 +92,7 @@ Task 10–13 (P2) ───────────► após P0 completo
|
|
|
92
92
|
|
|
93
93
|
**Instruções:**
|
|
94
94
|
1. Criar `.task-flow/docs/` se não existir.
|
|
95
|
-
2. Copiar corpo atual de `.cursor/rules/coding_standards.mdc` (sem frontmatter) para `.task-flow/
|
|
95
|
+
2. Copiar corpo atual de `.cursor/rules/coding_standards.mdc` (sem frontmatter) para `.task-flow/guides/coding-standards-full.md`.
|
|
96
96
|
3. Adicionar cabeçalho no full doc: “Carregar sob demanda — audit profundo, dúvidas de arquitetura; não colar no chat inteiro.”
|
|
97
97
|
|
|
98
98
|
**Critério de aceite:** `coding-standards-full.md` ≥ linhas do antigo corpo; nenhuma seção crítica perdida.
|
|
@@ -105,7 +105,7 @@ Task 10–13 (P2) ───────────► após P0 completo
|
|
|
105
105
|
|
|
106
106
|
**Instruções:**
|
|
107
107
|
1. Manter frontmatter: `alwaysApply: false`, `globs: src/**,app/**`, `description` clara.
|
|
108
|
-
2. Corpo **80–120 linhas**: estrutura `app/features/shared`; app thin; page orchestrator; service+use-case; RHF+zod; `cn()`; sem `any`; sem raw button/input; naming suffixes (tabela compacta); link `mdc:.task-flow/
|
|
108
|
+
2. Corpo **80–120 linhas**: estrutura `app/features/shared`; app thin; page orchestrator; service+use-case; RHF+zod; `cn()`; sem `any`; sem raw button/input; naming suffixes (tabela compacta); link `mdc:.task-flow/guides/coding-standards-full.md` para detalhes.
|
|
109
109
|
3. Remover exemplos de código longos do `.mdc` (ficam no full doc).
|
|
110
110
|
|
|
111
111
|
**Critério de aceite:** `wc -l .cursor/rules/coding_standards.mdc` ≤ 130; `wc -c` ≤ 6 KB.
|
|
@@ -163,7 +163,7 @@ Task 10–13 (P2) ───────────► após P0 completo
|
|
|
163
163
|
|
|
164
164
|
**Instruções:**
|
|
165
165
|
1. `.claude/skills/rbin-coding-standards/SKILL.md`: `disable-model-invocation: true`.
|
|
166
|
-
2. Steps: (1) aplicar checklist em `coding_standards.mdc`; (2) só se ambíguo, ler `.task-flow/
|
|
166
|
+
2. Steps: (1) aplicar checklist em `coding_standards.mdc`; (2) só se ambíguo, ler `.task-flow/guides/coding-standards-full.md` seções relevantes — **não** colar arquivo inteiro no chat.
|
|
167
167
|
3. `reference.md`: paths atualizados para checklist + full doc.
|
|
168
168
|
|
|
169
169
|
**Critério de aceite:** skill não referencia “ler coding_standards.mdc inteiro” como passo 1.
|
|
@@ -215,7 +215,7 @@ Task 10–13 (P2) ───────────► após P0 completo
|
|
|
215
215
|
**Instruções:**
|
|
216
216
|
1. `task-flow-audit`, `task-flow-improve-changes`, `task-flow-sync` SKILL.md: paths checklist + full.
|
|
217
217
|
2. `AGENTS.md` tabela Commands: audit/implement → checklist; full path explícito opcional.
|
|
218
|
-
3. `.task-flow/CODEX.md`: mesma distinção.
|
|
218
|
+
3. `.task-flow/guides/CODEX.md`: mesma distinção.
|
|
219
219
|
|
|
220
220
|
**Critério de aceite:** AGENTS.md não manda “ler coding_standards.mdc inteiro” sem qualificador.
|
|
221
221
|
|
|
@@ -362,4 +362,4 @@ Após sync, o gerador de subtasks pode expandir cada linha usando as **Instruç
|
|
|
362
362
|
|
|
363
363
|
---
|
|
364
364
|
|
|
365
|
-
*Referência: [OPTIMIZATION-PLAN.md](OPTIMIZATION-PLAN.md) · Índice: [README.md](README.md)*
|
|
365
|
+
*Referência: [OPTIMIZATION-PLAN.md](OPTIMIZATION-PLAN.md) · Índice: [README.md](../README.md)*
|
|
@@ -70,7 +70,7 @@ Estimativa ~4 caracteres/token.
|
|
|
70
70
|
|
|
71
71
|
### 4.2 `coding_standards.mdc` — ✅ resolvido (P0.2)
|
|
72
72
|
|
|
73
|
-
- **Checklist** (~100 linhas, glob `src/**`) + **full** em `.task-flow/
|
|
73
|
+
- **Checklist** (~100 linhas, glob `src/**`) + **full** em `.task-flow/guides/coding-standards-full.md` sob demanda.
|
|
74
74
|
- Skill `rbin-coding-standards`: `disable-model-invocation: true`; lê seções do full doc só se ambíguo.
|
|
75
75
|
|
|
76
76
|
### 4.3 Duplicação skill + regra no `run` — parcial (P0.3 ✅)
|
|
@@ -128,7 +128,7 @@ Estimativa ~4 caracteres/token.
|
|
|
128
128
|
| # | Ação | Arquivos / notas | Status |
|
|
129
129
|
|---|------|------------------|--------|
|
|
130
130
|
| P0.1 | Fundir `git_control` + `commit_practices` em uma regra always (~70–90 linhas) | `.cursor/rules/rbin-git-policy.mdc` ou nome equivalente; remover always duplicado | [x] |
|
|
131
|
-
| P0.2 | Dividir standards: **checklist** (glob) + **full** (sob demanda) | `coding_standards.mdc` enxuto; `.task-flow/
|
|
131
|
+
| P0.2 | Dividir standards: **checklist** (glob) + **full** (sob demanda) | `coding_standards.mdc` enxuto; `.task-flow/guides/coding-standards-full.md` com conteúdo atual | [x] |
|
|
132
132
|
| P0.3 | Enxugar `task_work.mdc` → pointer para `@task-flow-run` / `workflow.md` | ~40 linhas máx. | [x] |
|
|
133
133
|
| P0.4 | Enxugar `task_execution.mdc` → pointer para `task-flow-cursor` + skills | Evitar índice duplicado de `CLAUDE.md` | [x] |
|
|
134
134
|
| P0.5 | `rbin-coding-standards`: `disable-model-invocation: true` | `.claude/skills/` + cópia `.cursor/skills/` | [x] |
|
|
@@ -163,7 +163,7 @@ Estimativa ~4 caracteres/token.
|
|
|
163
163
|
|
|
164
164
|
```text
|
|
165
165
|
.cursor/rules/coding_standards.mdc # ~80–120 linhas: checklist + links
|
|
166
|
-
.task-flow/
|
|
166
|
+
.task-flow/guides/coding-standards-full.md # conteúdo atual (exemplos, Nest, RHF…)
|
|
167
167
|
.claude/skills/rbin-coding-standards/
|
|
168
168
|
SKILL.md # aponta checklist + “read full doc if ambiguous”
|
|
169
169
|
reference.md # já existe; alinhar paths
|
|
@@ -8,6 +8,151 @@ These rules define how code MUST be written when implementing tasks. Always foll
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## Vercel — environment variables
|
|
12
|
+
|
|
13
|
+
**When the project deploys on Vercel** (Next.js, etc.), follow this section for `.env` files.
|
|
14
|
+
|
|
15
|
+
### Instruções para a IA (executar nesta ordem)
|
|
16
|
+
|
|
17
|
+
1. **Antes de tudo — auditar variáveis sem uso** [§0]: para cada variável dos `.env*`, verifique se ela é realmente referenciada no código/configuração. **Liste as órfãs e confirme com o usuário antes de remover** — não apague sozinha (algumas são usadas só em runtime/CI/infra). Só depois de limpar é que se alinham os 3 arquivos.
|
|
18
|
+
2. Crie `scripts/env-files-check.sh` e `scripts/vercel-env-sync.sh` com **exatamente** o conteúdo das seções [§5] e [§6]. Marque ambos como executáveis (`chmod +x`).
|
|
19
|
+
3. Garanta os **3 arquivos de ambiente** seguindo a convenção [§1]: mesma sequência de chaves nos 3, **ordem alfabética**, uma variável por linha, sem comentários de seção no meio. Crie `.env.example` (commitado, valores vazios). **Nunca** coloque valores reais no `.env.example`.
|
|
20
|
+
4. Ajuste o `.gitignore` conforme [§2].
|
|
21
|
+
5. Ajuste a `PLAINTEXT_REGEX` do `vercel-env-sync.sh` ao stack do projeto [§3].
|
|
22
|
+
6. Rode `./scripts/env-files-check.sh` e mostre a saída. Não rode o sync da Vercel sem credenciais do usuário — explique os comandos de [§4].
|
|
23
|
+
7. Confirme os **critérios de aceite** [§7].
|
|
24
|
+
|
|
25
|
+
### §0 — Auditoria (variáveis sem uso)
|
|
26
|
+
|
|
27
|
+
Para cada chave dos `.env*`, procure referências: `process.env.NOME`, `import.meta.env.NOME`, `env("NOME")`, configs/CI (`vercel.json`, `*.yml`, `Dockerfile`).
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
for k in $(grep -hE '^[A-Za-z_][A-Za-z0-9_]*=' .env.example .env.local .env.production 2>/dev/null \
|
|
31
|
+
| sed -E 's/=.*//' | sort -u); do
|
|
32
|
+
n=$(grep -rIn --exclude-dir=node_modules --exclude-dir=.git --exclude='.env*' \
|
|
33
|
+
-e "$k" . 2>/dev/null | wc -l | tr -d ' ')
|
|
34
|
+
printf '%-32s %s ref(s)\n' "$k" "$n"
|
|
35
|
+
done
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Trate `0 ref` como candidata, não certeza.** Confirme com o usuário antes de remover.
|
|
39
|
+
|
|
40
|
+
### §1 — Convenção dos 3 arquivos
|
|
41
|
+
|
|
42
|
+
| Arquivo | Commitado? | Papel | Valores |
|
|
43
|
+
|---|---|---|---|
|
|
44
|
+
| `.env.example` | ✅ sim | Lista canônica (doc) | vazios/placeholder |
|
|
45
|
+
| `.env.local` | ❌ não | Desenvolvimento local | reais de dev |
|
|
46
|
+
| `.env.production` | ❌ não | **Sincronizado com a Vercel** | reais de produção |
|
|
47
|
+
|
|
48
|
+
Mesma sequência de chaves, **ordem alfabética**. Sem comentários de seção no meio.
|
|
49
|
+
|
|
50
|
+
### §2 — `.gitignore`
|
|
51
|
+
|
|
52
|
+
```gitignore
|
|
53
|
+
.env
|
|
54
|
+
.env.*
|
|
55
|
+
!.env.example
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### §3 — Classificação secret × plaintext (Vercel)
|
|
59
|
+
|
|
60
|
+
| Classe | Exemplos | Tipo |
|
|
61
|
+
|---|---|---|
|
|
62
|
+
| `NEXT_PUBLIC_*` | `NEXT_PUBLIC_API_URL` | **plaintext** |
|
|
63
|
+
| Flags / URLs públicas | `*_ENABLED`, `*_PUBLIC_URL`, `NODE_ENV` | **plaintext** |
|
|
64
|
+
| Todo o resto | `*_API_KEY`, `*_SECRET`, `*_TOKEN` | **secret** (`--sensitive`) |
|
|
65
|
+
|
|
66
|
+
### §4 — Comandos
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm i -g vercel && vercel login && vercel link
|
|
70
|
+
./scripts/env-files-check.sh
|
|
71
|
+
DRY_RUN=1 ./scripts/vercel-env-sync.sh
|
|
72
|
+
./scripts/vercel-env-sync.sh
|
|
73
|
+
vercel env pull .env.vercel.check --environment=production
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### §5 — `scripts/env-files-check.sh`
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
#!/usr/bin/env bash
|
|
80
|
+
set -euo pipefail
|
|
81
|
+
if [ "$#" -gt 0 ]; then FILES=("$@"); else FILES=(".env.example" ".env.local" ".env.production"); fi
|
|
82
|
+
keys_of() { grep -E '^[A-Za-z_][A-Za-z0-9_]*=' "$1" | sed -E 's/=.*//'; }
|
|
83
|
+
fail=0; ref=""; ref_file=""
|
|
84
|
+
for f in "${FILES[@]}"; do
|
|
85
|
+
if [ ! -f "$f" ]; then echo "❌ faltando: $f"; fail=1; continue; fi
|
|
86
|
+
keys="$(keys_of "$f")"
|
|
87
|
+
sorted="$(printf '%s\n' "$keys" | LC_ALL=C sort)"
|
|
88
|
+
if [ "$keys" != "$sorted" ]; then
|
|
89
|
+
echo "❌ $f não está em ordem alfabética."
|
|
90
|
+
diff <(printf '%s\n' "$keys") <(printf '%s\n' "$sorted") | head -6
|
|
91
|
+
fail=1
|
|
92
|
+
fi
|
|
93
|
+
count="$(printf '%s\n' "$keys" | grep -c . || true)"
|
|
94
|
+
echo "• $f — $count variáveis"
|
|
95
|
+
if [ -z "$ref" ]; then ref="$sorted"; ref_file="$f"
|
|
96
|
+
elif [ "$sorted" != "$ref" ]; then
|
|
97
|
+
echo "❌ $f difere de $ref_file:"
|
|
98
|
+
diff <(printf '%s\n' "$ref") <(printf '%s\n' "$sorted") || true
|
|
99
|
+
fail=1
|
|
100
|
+
fi
|
|
101
|
+
done
|
|
102
|
+
if [ "$fail" -eq 0 ]; then echo "✅ Arquivos alinhados, mesma sequência e em ordem alfabética."
|
|
103
|
+
else echo "→ Corrija as divergências acima."; fi
|
|
104
|
+
exit "$fail"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### §6 — `scripts/vercel-env-sync.sh`
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
#!/usr/bin/env bash
|
|
111
|
+
set -euo pipefail
|
|
112
|
+
ENV_FILE="${1:-.env.production}"
|
|
113
|
+
TARGET="${2:-production}"
|
|
114
|
+
DRY_RUN="${DRY_RUN:-0}"
|
|
115
|
+
PLAINTEXT_REGEX="${PLAINTEXT_REGEX:-^(NEXT_PUBLIC_|NODE_ENV$|.*_ENABLED$|.*_URL_STRATEGY$|.*_PUBLIC_URL$|.*_REGION$)}"
|
|
116
|
+
command -v vercel >/dev/null 2>&1 || { echo "❌ vercel CLI não encontrado. Instale: npm i -g vercel"; exit 1; }
|
|
117
|
+
[ -f "$ENV_FILE" ] || { echo "❌ arquivo não encontrado: $ENV_FILE"; exit 1; }
|
|
118
|
+
[ -d ".vercel" ] || echo "⚠️ projeto não vinculado — rode 'vercel link' antes (continuando…)"
|
|
119
|
+
secret_count=0; plain_count=0
|
|
120
|
+
while IFS= read -r line <&3 || [ -n "$line" ]; do
|
|
121
|
+
case "$line" in ''|\#*) continue ;; esac
|
|
122
|
+
case "$line" in *=*) ;; *) continue ;; esac
|
|
123
|
+
key="${line%%=*}"; val="${line#*=}"
|
|
124
|
+
key="$(printf '%s' "$key" | tr -d '[:space:]')"
|
|
125
|
+
val="${val%\"}"; val="${val#\"}"; val="${val%\'}"; val="${val#\'}"
|
|
126
|
+
[ -z "$key" ] && continue
|
|
127
|
+
if [ -z "$val" ]; then echo "⏭️ $key (valor vazio — pulado)"; continue; fi
|
|
128
|
+
if printf '%s' "$key" | grep -Eq "$PLAINTEXT_REGEX"; then
|
|
129
|
+
flag=""; kind="plaintext"; plain_count=$((plain_count+1))
|
|
130
|
+
else
|
|
131
|
+
flag="--sensitive"; kind="secret "; secret_count=$((secret_count+1))
|
|
132
|
+
fi
|
|
133
|
+
echo "→ [$kind] $key ($TARGET)"
|
|
134
|
+
[ "$DRY_RUN" = "1" ] && continue
|
|
135
|
+
vercel env rm "$key" "$TARGET" -y </dev/null >/dev/null 2>&1 || true
|
|
136
|
+
printf '%s' "$val" | vercel env add "$key" "$TARGET" $flag >/dev/null
|
|
137
|
+
done 3< "$ENV_FILE"
|
|
138
|
+
echo "✅ $secret_count secret(s), $plain_count plaintext em '$TARGET'."
|
|
139
|
+
[ "$DRY_RUN" = "1" ] && echo "(DRY_RUN — nada foi enviado)"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### §7 — Critérios de aceite
|
|
143
|
+
|
|
144
|
+
- Auditoria [§0] feita; órfãs removidas após confirmação do usuário.
|
|
145
|
+
- Scripts executáveis; 3 arquivos com mesma sequência alfabética.
|
|
146
|
+
- `./scripts/env-files-check.sh` retorna exit 0.
|
|
147
|
+
- `.gitignore` ignora `.env*` exceto `.env.example`.
|
|
148
|
+
- Nenhum valor real no `.env.example` nem no git.
|
|
149
|
+
|
|
150
|
+
### §8 — Limitações
|
|
151
|
+
|
|
152
|
+
Valores multilinha (PEM/JSON) → base64 numa linha ou cadastro manual na Vercel. `NEXT_PUBLIC_*` no target do **build**.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
11
156
|
## Project Structure
|
|
12
157
|
|
|
13
158
|
All projects use TypeScript and follow this structure:
|
|
@@ -344,7 +344,7 @@ Durante **`task-flow: run`**, use `/graphify` ou `graphify query` para achar mó
|
|
|
344
344
|
|
|
345
345
|
- [Claude Code — Skills](https://code.claude.com/docs/en/skills)
|
|
346
346
|
- [Agent Skills open standard](https://agentskills.io/) (interoperável com Cursor)
|
|
347
|
-
- Comandos Task Flow: [
|
|
347
|
+
- Comandos Task Flow: [../../README.md](../../README.md)
|
|
348
348
|
- Regras completas: `../../.cursor/rules/`
|
|
349
349
|
|
|
350
350
|
---
|
|
@@ -65,7 +65,7 @@ projeto/
|
|
|
65
65
|
└── .cursor/rules/ # Lidos quando AGENTS.md / CODEX.md indicam
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
**v1.21+:** `sync` e `run` vêm **resumidos no AGENTS.md** (~dentro do orçamento 32–64 KiB). Demais comandos → ler `.task-flow/CODEX.md` ou `.mdc` indicado.
|
|
68
|
+
**v1.21+:** `sync` e `run` vêm **resumidos no AGENTS.md** (~dentro do orçamento 32–64 KiB). Demais comandos → ler `.task-flow/guides/CODEX.md` ou `.mdc` indicado.
|
|
69
69
|
|
|
70
70
|
Verifique após init:
|
|
71
71
|
|
|
@@ -324,10 +324,10 @@ Codex **não** substitui `task-flow: sync` — isso é trabalho do agente lendo
|
|
|
324
324
|
## 13. Checklist de maturidade Codex + Task Flow
|
|
325
325
|
|
|
326
326
|
- [x] `AGENTS.md` otimizado após `init` (sync/run embutidos + tabela)
|
|
327
|
-
- [x] `.task-flow/CODEX.md` para workflows sob demanda
|
|
327
|
+
- [x] `.task-flow/guides/CODEX.md` para workflows sob demanda
|
|
328
328
|
- [x] `.codex/config.toml` com `project_doc_max_bytes = 65536`
|
|
329
329
|
- [ ] Tamanho `AGENTS.md` < ~28 KiB se não usar config.toml
|
|
330
|
-
- [ ] Prompts citam `AGENTS.md` + `.task-flow/CODEX.md` para `run`
|
|
330
|
+
- [ ] Prompts citam `AGENTS.md` + `.task-flow/guides/CODEX.md` para `run`
|
|
331
331
|
- [ ] `improve changes` + `check` antes de PR
|
|
332
332
|
- [ ] `AGENTS.md` em subpastas de monorepo se necessário
|
|
333
333
|
|
|
@@ -351,10 +351,10 @@ pnpm lint:fix && pnpm build && pnpm test
|
|
|
351
351
|
Nunca executar git write. Sugerir Conventional Commits + Task/Subtask ID.
|
|
352
352
|
|
|
353
353
|
## Coding standards
|
|
354
|
-
Ao implementar código, seguir o checklist em `.cursor/rules/coding_standards.mdc`; exemplos completos em `.task-flow/
|
|
354
|
+
Ao implementar código, seguir o checklist em `.cursor/rules/coding_standards.mdc`; exemplos completos em `.task-flow/guides/coding-standards-full.md` (só seções necessárias).
|
|
355
355
|
|
|
356
356
|
## Mais detalhe
|
|
357
|
-
- Task Flow por plataforma: `.task-flow/platforms/codex.md`
|
|
357
|
+
- Task Flow por plataforma: `.task-flow/guides/platforms/codex.md`
|
|
358
358
|
- Comandos: `.task-flow/README.md`
|
|
359
359
|
```
|
|
360
360
|
|
|
@@ -89,7 +89,7 @@ Confirme no projeto: `rg 'alwaysApply: true' .cursor/rules` → deve listar **ap
|
|
|
89
89
|
| `cursor_rules.mdc` | formato `.mdc` | **Glob** `.cursor/rules/**` |
|
|
90
90
|
| `self_improve.mdc` | evoluir regras | Manual `@self_improve` |
|
|
91
91
|
|
|
92
|
-
**Doc (não é regra):** `.task-flow/
|
|
92
|
+
**Doc (não é regra):** `.task-flow/guides/coding-standards-full.md` — seções sob demanda; nunca colar inteiro no chat.
|
|
93
93
|
|
|
94
94
|
### Otimização P0 — implementada
|
|
95
95
|
|
|
@@ -325,7 +325,7 @@ Com Graphify instalado (`rbin-install-dev`), o Task Flow traz **`graphify-task-f
|
|
|
325
325
|
|
|
326
326
|
- [Cursor — Rules](https://cursor.com/docs/context/rules)
|
|
327
327
|
- [Agent Skills standard](https://agentskills.io/)
|
|
328
|
-
- Comandos: [
|
|
328
|
+
- Comandos: [../../README.md](../../README.md)
|
|
329
329
|
- Claude (skills espelhadas): [claude-code.md](claude-code.md)
|
|
330
330
|
|
|
331
331
|
---
|
|
File without changes
|
package/AGENTS.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Task flow** always means **RBIN Task Flow**. Codex does not load `.cursor/rules/*.mdc` automatically — use this file plus **read on demand** files below.
|
|
4
4
|
|
|
5
|
-
**Full Codex guide:** `.task-flow/platforms/codex.md` · **Workflows (read when executing a command):** `.task-flow/CODEX.md`
|
|
5
|
+
**Full Codex guide:** `.task-flow/guides/platforms/codex.md` · **Workflows (read when executing a command):** `.task-flow/guides/CODEX.md`
|
|
6
6
|
|
|
7
7
|
## Paths
|
|
8
8
|
|
|
@@ -28,20 +28,20 @@ No explanatory comments. Complex topics → `dev-logs/*.md`. Allowed: `// ──
|
|
|
28
28
|
|
|
29
29
|
| Command | Read first |
|
|
30
30
|
|---------|------------|
|
|
31
|
-
| `task-flow: sync` | Section **Sync** below; details `.task-flow/CODEX.md` |
|
|
32
|
-
| `task-flow: run …` | Section **Run** below; details `.task-flow/CODEX.md` |
|
|
31
|
+
| `task-flow: sync` | Section **Sync** below; details `.task-flow/guides/CODEX.md` |
|
|
32
|
+
| `task-flow: run …` | Section **Run** below; details `.task-flow/guides/CODEX.md` |
|
|
33
33
|
| `task-flow: status` | `.task-flow/tasks.status.md` |
|
|
34
|
-
| `task-flow: think` | `.task-flow/CODEX.md` · optional codebase scan |
|
|
34
|
+
| `task-flow: think` | `.task-flow/guides/CODEX.md` · optional codebase scan |
|
|
35
35
|
| `task-flow: check` | `.cursor/rules/task_check.mdc` · `package.json` |
|
|
36
36
|
| `task-flow: improve changes` | `git diff --name-only HEAD` · `.cursor/rules/task_improve_changes.mdc` |
|
|
37
|
-
| `task-flow: audit` | `.cursor/rules/task_audit.mdc` · checklist `coding_standards.mdc` (full: `.task-flow/
|
|
38
|
-
| `task-flow: review X` | `.task-flow/CODEX.md` |
|
|
37
|
+
| `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
39
|
| `task-flow: validate` | `.cursor/rules/task_validate.mdc` · then sync |
|
|
40
40
|
| `task-flow: refactor X` | `.cursor/rules/task_refactor.mdc` |
|
|
41
|
-
| `task-flow: estimate X` | `.task-flow/CODEX.md` |
|
|
42
|
-
| `task-flow: report X` | `.task-flow/CODEX.md` |
|
|
41
|
+
| `task-flow: estimate X` | `.task-flow/guides/CODEX.md` |
|
|
42
|
+
| `task-flow: report X` | `.task-flow/guides/CODEX.md` |
|
|
43
43
|
| `task-flow: generate flow` | `.cursor/rules/task_generate_flow.mdc` |
|
|
44
|
-
| Implementing code | Checklist `.cursor/rules/coding_standards.mdc` · depth: `.task-flow/
|
|
44
|
+
| Implementing code | Checklist `.cursor/rules/coding_standards.mdc` · depth: `.task-flow/guides/coding-standards-full.md` (sections only) |
|
|
45
45
|
|
|
46
46
|
## Sync (embedded)
|
|
47
47
|
|
|
@@ -71,7 +71,7 @@ Leia AGENTS.md. Execute task-flow: sync.
|
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
```
|
|
74
|
-
Leia AGENTS.md e .task-flow/CODEX.md (Run). task-flow: run next 3.
|
|
74
|
+
Leia AGENTS.md e .task-flow/guides/CODEX.md (Run). task-flow: run next 3.
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
```
|
|
@@ -80,4 +80,4 @@ task-flow: improve changes — git diff --name-only HEAD, audite só esses arqui
|
|
|
80
80
|
|
|
81
81
|
## Other platforms
|
|
82
82
|
|
|
83
|
-
Claude: `CLAUDE.md` + `.claude/skills/`. Cursor: `.cursor/rules/`. Index: `.task-flow/AI-PLATFORMS.md`.
|
|
83
|
+
Claude: `CLAUDE.md` + `.claude/skills/`. Cursor: `.cursor/rules/`. Index: `.task-flow/guides/AI-PLATFORMS.md`.
|
package/CLAUDE.md
CHANGED
|
@@ -34,8 +34,8 @@ Natural language `task-flow: …` works the same. Details: [.task-flow/README.md
|
|
|
34
34
|
## Anti-patterns (save context)
|
|
35
35
|
|
|
36
36
|
- Prefer **`/task-flow-run`** (or `@task-flow-run`) for executing subtasks — avoid `@task_work` plus duplicate `.cursor/rules/task_work.mdc` in the same turn.
|
|
37
|
-
- Do **not** load `.task-flow/
|
|
38
|
-
- Cursor users: see [.task-flow/CURSOR.md](.task-flow/CURSOR.md) for always-on vs skills (`@task-flow-*`).
|
|
37
|
+
- Do **not** load `.task-flow/guides/coding-standards-full.md` unless the user asks for depth; use `/rbin-coding-standards` checklist or `coding_standards.mdc` for normal implementation.
|
|
38
|
+
- Cursor users: see [.task-flow/guides/CURSOR.md](.task-flow/guides/CURSOR.md) for always-on vs skills (`@task-flow-*`).
|
|
39
39
|
|
|
40
40
|
## Git
|
|
41
41
|
|
|
@@ -43,7 +43,7 @@ Natural language `task-flow: …` works the same. Details: [.task-flow/README.md
|
|
|
43
43
|
|
|
44
44
|
## Graphify (optional)
|
|
45
45
|
|
|
46
|
-
During `/task-flow-run`, if `graphify-out/` exists, use `graphify query` before broad search. See [.task-flow/GRAPHIFY.md](.task-flow/GRAPHIFY.md).
|
|
46
|
+
During `/task-flow-run`, if `graphify-out/` exists, use `graphify query` before broad search. See [.task-flow/guides/GRAPHIFY.md](.task-flow/guides/GRAPHIFY.md).
|
|
47
47
|
|
|
48
48
|
## Cursor rules (reference)
|
|
49
49
|
|
|
@@ -51,9 +51,9 @@ Full procedures also live in `.cursor/rules/` (shared with Cursor). Claude Code
|
|
|
51
51
|
|
|
52
52
|
## Other platforms
|
|
53
53
|
|
|
54
|
-
- Index: [.task-flow/AI-PLATFORMS.md](.task-flow/AI-PLATFORMS.md)
|
|
55
|
-
- Claude: [.task-flow/platforms/claude-code.md](.task-flow/platforms/claude-code.md)
|
|
56
|
-
- Codex: [AGENTS.md](AGENTS.md) · [.task-flow/CODEX.md](.task-flow/CODEX.md)
|
|
54
|
+
- Index: [.task-flow/guides/AI-PLATFORMS.md](.task-flow/guides/AI-PLATFORMS.md)
|
|
55
|
+
- Claude: [.task-flow/guides/platforms/claude-code.md](.task-flow/guides/platforms/claude-code.md)
|
|
56
|
+
- Codex: [AGENTS.md](AGENTS.md) · [.task-flow/guides/CODEX.md](.task-flow/guides/CODEX.md)
|
|
57
57
|
|
|
58
58
|
## Models
|
|
59
59
|
|
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
<a id="português"></a>
|
|
34
34
|
# 🇧🇷 Português
|
|
35
35
|
|
|
36
|
-
> **v1.
|
|
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
|
|
|
@@ -89,15 +89,15 @@ rbin-task-flow report <ids> # Gera relatório (ex: "1" ou "1,2" ou "all")
|
|
|
89
89
|
|
|
90
90
|
Após inicializar, use estes comandos na IA (Cursor/Claude/Codex) para gerenciar tarefas automaticamente.
|
|
91
91
|
|
|
92
|
-
**Otimizar por plataforma:** [.task-flow/AI-PLATFORMS.md](.task-flow/AI-PLATFORMS.md) · [Claude](.task-flow/platforms/claude-code.md) · [Cursor](.task-flow/platforms/cursor.md) · [Codex](.task-flow/platforms/codex.md) · [Graphify](.task-flow/GRAPHIFY.md)
|
|
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
94
|
**Graphify (opcional):** `rbin-task-flow init --graphify` configura coexistência e roda `graphify extract . --backend claude-cli` (CLI via `rbin-install-dev`; usa assinatura Claude Code).
|
|
95
95
|
|
|
96
96
|
**Claude Code / Cursor skills (v1.20+):** `init` copia 15 skills para `.claude/skills/` e `.cursor/skills/` — use `/task-flow-sync`, `/task-flow-run`, `/task-flow-validate`, etc.
|
|
97
97
|
|
|
98
|
-
**Codex (v1.21+):** `AGENTS.md` com sync/run embutidos, `.task-flow/CODEX.md` sob demanda, `.codex/config.toml` (64 KiB).
|
|
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
|
-
**Cursor (v1.23+):** `task-flow-cursor.mdc` + `rbin-git-policy.mdc` (2 always-on) + skills — ver `.task-flow/CURSOR.md`.
|
|
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
102
|
**Perfil minimal:** `init --profile minimal` instala só as 2 regras always-on e as 15 skills; workflows via `@task-flow-*` (sem `task_work`, `coding_standards` glob, etc.). `standard` (padrão) copia todas as regras `.cursor/rules/`.
|
|
103
103
|
|
|
@@ -419,7 +419,7 @@ Para problemas ou perguntas:
|
|
|
419
419
|
<a id="english"></a>
|
|
420
420
|
# 🇬🇧 English
|
|
421
421
|
|
|
422
|
-
> **v1.
|
|
422
|
+
> **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
423
|
|
|
424
424
|
## What Is This Project?
|
|
425
425
|
|
|
@@ -475,13 +475,13 @@ rbin-task-flow report <ids> # Generate report (e.g., "1" or "1,2" or "all")
|
|
|
475
475
|
|
|
476
476
|
After initializing, use these commands in your AI (Cursor/Claude/Codex) to automatically manage tasks.
|
|
477
477
|
|
|
478
|
-
**Per-platform optimization:** [index](.task-flow/AI-PLATFORMS.md) · [Claude](.task-flow/platforms/claude-code.md) · [Cursor](.task-flow/platforms/cursor.md) · [Codex](.task-flow/platforms/codex.md) · [Graphify](.task-flow/GRAPHIFY.md)
|
|
478
|
+
**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
479
|
|
|
480
480
|
**Graphify (optional):** `rbin-task-flow init --graphify` — cooperative setup + runs `graphify extract . --backend claude-cli` (CLI from `rbin-install-dev`; uses Claude Code subscription).
|
|
481
481
|
|
|
482
482
|
**Claude / Cursor skills (v1.20+):** installs 15 skills — use `/task-flow-sync`, `/task-flow-run`, `/task-flow-validate`, etc.
|
|
483
483
|
|
|
484
|
-
**Codex (v1.21+):** optimized `AGENTS.md`, `.task-flow/CODEX.md`, `.codex/config.toml`.
|
|
484
|
+
**Codex (v1.21+):** optimized `AGENTS.md`, `.task-flow/guides/CODEX.md`, `.codex/config.toml`.
|
|
485
485
|
|
|
486
486
|
**Cursor (v1.23+):** 2 always-on rules + 15 skills — `@task-flow-sync`, `@task-flow-run`, `@task-flow-validate`.
|
|
487
487
|
|
package/lib/codex.js
CHANGED
|
@@ -23,7 +23,7 @@ async function setupCodexIntegration(targetPath, options = {}) {
|
|
|
23
23
|
|
|
24
24
|
const codexWorkflows = path.join(targetPath, '.task-flow', 'CODEX.md');
|
|
25
25
|
if (fs.existsSync(codexWorkflows)) {
|
|
26
|
-
showInfo('Codex workflows: .task-flow/CODEX.md (read on demand)');
|
|
26
|
+
showInfo('Codex workflows: .task-flow/guides/CODEX.md (read on demand)');
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
showInfo('Codex entry: AGENTS.md — embedded sync/run + command table');
|
package/lib/cursor.js
CHANGED
|
@@ -20,7 +20,7 @@ async function setupCursorIntegration(targetPath, options = {}) {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
if (fs.existsSync(cursorMd)) {
|
|
23
|
-
showInfo('Cursor guide: .task-flow/CURSOR.md');
|
|
23
|
+
showInfo('Cursor guide: .task-flow/guides/CURSOR.md');
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
const gitPolicy = path.join(targetPath, '.cursor', 'rules', 'rbin-git-policy.mdc');
|
package/lib/graphify.js
CHANGED
|
@@ -34,7 +34,7 @@ function demoteUpstreamGraphifyRule(targetPath) {
|
|
|
34
34
|
if (!content.includes('RBIN Task Flow')) {
|
|
35
35
|
const notice = [
|
|
36
36
|
'',
|
|
37
|
-
'- **RBIN Task Flow:** This file was set to `alwaysApply: false` by `rbin-task-flow` to avoid competing with Task Flow rules. Use [.cursor/rules/graphify-task-flow.mdc](mdc:.cursor/rules/graphify-task-flow.mdc) and [.task-flow/GRAPHIFY.md](mdc:.task-flow/GRAPHIFY.md) instead.',
|
|
37
|
+
'- **RBIN Task Flow:** This file was set to `alwaysApply: false` by `rbin-task-flow` to avoid competing with Task Flow rules. Use [.cursor/rules/graphify-task-flow.mdc](mdc:.cursor/rules/graphify-task-flow.mdc) and [.task-flow/guides/GRAPHIFY.md](mdc:.task-flow/guides/GRAPHIFY.md) instead.',
|
|
38
38
|
'',
|
|
39
39
|
].join('\n');
|
|
40
40
|
content = content.trimEnd() + notice;
|
|
@@ -108,7 +108,7 @@ async function setupGraphifyIntegration(targetPath, options = {}) {
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
showInfo('Graphify + Task Flow guide: .task-flow/GRAPHIFY.md');
|
|
111
|
+
showInfo('Graphify + Task Flow guide: .task-flow/guides/GRAPHIFY.md');
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
module.exports = {
|
package/lib/install.js
CHANGED
|
@@ -203,6 +203,58 @@ async function copyConfigs(targetPath, options = {}) {
|
|
|
203
203
|
await copyTaskFlow(targetPath, { update: isUpdate, reset: isReset });
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
+
const LEGACY_TASK_FLOW_ROOT_FILES = [
|
|
207
|
+
'GRAPHIFY.md',
|
|
208
|
+
'CODEX.md',
|
|
209
|
+
'CURSOR.md',
|
|
210
|
+
'AI-PLATFORMS.md',
|
|
211
|
+
'OPTIMIZATION-PLAN.md',
|
|
212
|
+
'OPTIMIZATION-IMPLEMENTATION-TASKS.md',
|
|
213
|
+
];
|
|
214
|
+
|
|
215
|
+
async function migrateLegacyTaskFlowLayout(taskFlowDest) {
|
|
216
|
+
await fs.ensureDir(path.join(taskFlowDest, 'guides', 'reports'));
|
|
217
|
+
|
|
218
|
+
for (const file of LEGACY_TASK_FLOW_ROOT_FILES) {
|
|
219
|
+
const legacyPath = path.join(taskFlowDest, file);
|
|
220
|
+
if (fs.existsSync(legacyPath)) {
|
|
221
|
+
await fs.remove(legacyPath);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
const legacyDocs = path.join(taskFlowDest, 'docs');
|
|
226
|
+
if (fs.existsSync(legacyDocs)) {
|
|
227
|
+
const standardsSrc = path.join(legacyDocs, 'coding-standards-full.md');
|
|
228
|
+
const standardsDest = path.join(taskFlowDest, 'guides', 'coding-standards-full.md');
|
|
229
|
+
if (fs.existsSync(standardsSrc) && !fs.existsSync(standardsDest)) {
|
|
230
|
+
await fs.move(standardsSrc, standardsDest);
|
|
231
|
+
}
|
|
232
|
+
const reportsDest = path.join(taskFlowDest, 'guides', 'reports');
|
|
233
|
+
const entries = await fs.readdir(legacyDocs);
|
|
234
|
+
for (const entry of entries) {
|
|
235
|
+
if (entry.startsWith('task-') && entry.endsWith('.md')) {
|
|
236
|
+
await fs.move(path.join(legacyDocs, entry), path.join(reportsDest, entry), {
|
|
237
|
+
overwrite: true,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
await fs.remove(legacyDocs);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
const legacyPlatforms = path.join(taskFlowDest, 'platforms');
|
|
245
|
+
const platformsDest = path.join(taskFlowDest, 'guides', 'platforms');
|
|
246
|
+
if (fs.existsSync(legacyPlatforms)) {
|
|
247
|
+
await fs.ensureDir(platformsDest);
|
|
248
|
+
const entries = await fs.readdir(legacyPlatforms);
|
|
249
|
+
for (const entry of entries) {
|
|
250
|
+
await fs.move(path.join(legacyPlatforms, entry), path.join(platformsDest, entry), {
|
|
251
|
+
overwrite: true,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
await fs.remove(legacyPlatforms);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
206
258
|
async function copyTaskFlow(targetPath, options = {}) {
|
|
207
259
|
const isUpdate = options.update || false;
|
|
208
260
|
const isReset = options.reset || false;
|
|
@@ -241,6 +293,8 @@ async function copyTaskFlow(targetPath, options = {}) {
|
|
|
241
293
|
});
|
|
242
294
|
|
|
243
295
|
await fs.ensureDir(path.join(taskFlowDest, 'contexts'));
|
|
296
|
+
await fs.ensureDir(path.join(taskFlowDest, 'guides', 'reports'));
|
|
297
|
+
await migrateLegacyTaskFlowLayout(taskFlowDest);
|
|
244
298
|
|
|
245
299
|
const flowPath = path.join(taskFlowDest, 'tasks.flow.md');
|
|
246
300
|
if (!fs.existsSync(flowPath)) {
|
package/lib/report.js
CHANGED
|
@@ -7,7 +7,7 @@ const { parseTaskIds } = require('./utils');
|
|
|
7
7
|
async function generateReport(taskIdsInput, targetPath = process.cwd()) {
|
|
8
8
|
const tasksPath = path.join(targetPath, '.task-flow/.internal/tasks.json');
|
|
9
9
|
const statusPath = path.join(targetPath, '.task-flow/.internal/status.json');
|
|
10
|
-
const docsDir = path.join(targetPath, '.task-flow/
|
|
10
|
+
const docsDir = path.join(targetPath, '.task-flow/guides/reports');
|
|
11
11
|
|
|
12
12
|
if (!fs.existsSync(tasksPath)) {
|
|
13
13
|
console.log(chalk.red('❌ Tasks file not found. Run "task-flow: sync" first.'));
|
package/lib/utils.js
CHANGED
|
@@ -77,8 +77,8 @@ function showNextSteps(targetPath) {
|
|
|
77
77
|
console.log(chalk.blue(' 2.'), 'Sync:', chalk.cyan('task-flow: sync'), chalk.gray('· Cursor/Claude: @task-flow-sync or /task-flow-sync'));
|
|
78
78
|
console.log(chalk.blue(' 3.'), 'Run:', chalk.cyan('task-flow: run next X'), chalk.gray('· @task-flow-run'));
|
|
79
79
|
console.log(chalk.blue(' 4.'), 'Check status:', chalk.cyan('task-flow: status'));
|
|
80
|
-
console.log(chalk.blue(' 5.'), 'Codex:', chalk.gray('AGENTS.md + .task-flow/CODEX.md on demand'));
|
|
81
|
-
console.log(chalk.blue(' 6.'), 'Optional Graphify:', chalk.yellow('rbin-task-flow init --graphify'), chalk.gray('— .task-flow/GRAPHIFY.md'));
|
|
80
|
+
console.log(chalk.blue(' 5.'), 'Codex:', chalk.gray('AGENTS.md + .task-flow/guides/CODEX.md on demand'));
|
|
81
|
+
console.log(chalk.blue(' 6.'), 'Optional Graphify:', chalk.yellow('rbin-task-flow init --graphify'), chalk.gray('— .task-flow/guides/GRAPHIFY.md'));
|
|
82
82
|
console.log(chalk.cyan('═'.repeat(60)));
|
|
83
83
|
console.log(chalk.blue('\n See'), chalk.yellow('.task-flow/README.md'), chalk.blue('for all available commands\n'));
|
|
84
84
|
}
|