@caiqueoak/flow 0.2.1 → 0.3.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/README.md CHANGED
@@ -1,134 +1,72 @@
1
1
  # Flow
2
2
 
3
- Flow is a readability-first, agent-agnostic software-development workflow for coding agents. It maximizes autonomous delivery while keeping consequential product and engineering decisions explicit and approved.
3
+ Flow is a readability-first, agent-agnostic software delivery workflow for coding agents. It maximizes autonomous execution while keeping consequential product and engineering decisions under developer control.
4
4
 
5
- ## Workflow
5
+ ## Install
6
6
 
7
- ```text
8
- idea / existing project
9
-
10
- global discovery
11
- (product + engineering + production constraints)
12
-
13
- independent consequential decisions, batched for approval
14
-
15
- production-capable MVP
16
-
17
- work DAG (feature + technical + maintenance)
18
-
19
- /flow-next
20
-
21
- plan → build → gates → review → fixes → done
22
-
23
- next safe work item automatically
7
+ ```bash
8
+ npm install --save-dev @caiqueoak/flow
9
+ npx flow init
24
10
  ```
25
11
 
26
- The agent continues until it reaches a consequential decision, external approval, unrecoverable blocker, or no ready work. Every requested decision must include **Decision, Context, Options, Recommended option, Why recommended, and Impact**.
12
+ `flow init` is interactive, or use `--runtime codex,claude` in automation. Built-in adapters install the public `/flow` skill in `.codex/skills/flow/` or `.claude/skills/flow/`; a custom project-local skills directory is also available interactively.
27
13
 
28
- ## Project state
14
+ Skills are always installed inside the current project. Runtime integration directories never contain project state. If `.flow/` already exists, `flow init` only adds missing coding-agent integrations and updates `.flow/config.yaml`. If all built-in integrations are already configured, it exits without prompting. It does not modify canonical project artifacts.
29
15
 
30
- ```text
31
- .flow/
32
- ├── config.yaml
33
- ├── PRD.md
34
- ├── ENGINEERING.md
35
- ├── SUMMARY.md
36
- ├── DECISIONS.yaml
37
- ├── BACKLOG.yaml
38
- ├── STATE.yaml
39
- ├── gates/
40
- └── work-items/
41
- ├── 001F-user-profile/
42
- │ ├── SPEC.md
43
- │ └── TASKS.yaml
44
- ├── 002T-production-baseline/
45
- │ ├── SPEC.md
46
- │ └── TASKS.yaml
47
- └── 003M-auth-reconciliation/
48
- ├── SPEC.md
49
- └── TASKS.yaml
50
- ```
51
-
52
- `F`, `T`, and `M` mean **feature**, **technical**, and **maintenance**. The numeric prefix is a stable readable sequence, not execution order. Dependencies determine execution. `work-items` is intentionally generic enough to cover all three kinds while remaining explicit to readers.
53
-
54
- ## CLI
16
+ ## Project bootstrap
55
17
 
56
- The CLI is intentionally small:
18
+ `flow init` creates only:
57
19
 
58
- ```bash
59
- flow init
60
- flow install
61
- flow update
20
+ ```text
21
+ .flow/
22
+ └── config.yaml
62
23
  ```
63
24
 
64
- ### Requirements
65
-
66
- Flow requires Node.js 18 or newer.
67
-
68
- - `flow init` creates `.flow/`.
69
- - `flow install` installs the bundled skills into a coding-agent skill directory.
70
- - `flow update` fetches the latest published Flow package and replaces the installed Flow skills.
71
-
72
- The CLI does **not** plan work, schedule tasks, invoke models, or orchestrate subagents. Those responsibilities stay in the skills and coding-agent runtime.
73
-
74
- Use an explicit skill directory when needed:
25
+ It does not create a PRD, engineering guide, backlog, graph, state, decisions, work items, gates, or templates. During `/flow`, new project documents and artifacts are created only when the developer explicitly requests or authorizes them. Flow updates existing approved artifacts instead of inventing ad-hoc progress, summary, handoff, or status documents.
75
26
 
76
- ```bash
77
- flow install --target .agents/skills
78
- flow update --target .agents/skills
79
- ```
27
+ ## Workflow
80
28
 
81
- Then start a project in the coding agent:
29
+ There is one public skill:
82
30
 
83
31
  ```text
84
- /flow-new "I want to build a diet app"
32
+ /flow
85
33
  ```
86
34
 
87
- Normal operation after discovery is primarily:
35
+ Use `/flow <intent>` to start or change work, for example `/flow I want to build a diet app`. Use `/flow` with no extra input to continue from `.flow/STATE.md`.
88
36
 
89
- ```text
90
- /flow-next
91
- ```
37
+ Flow internally loads only the guidance needed for discovery, planning, build, review, or reconciliation. It asks only for consequential decisions and uses the largest safe degree of parallelism. Once execution is underway, it does not stop merely to announce completed tasks, progress, or next steps; it continues automatically until developer input, external approval, an unrecoverable blocker, or no ready work requires a real stop.
92
38
 
93
- ## Parallelism
39
+ When authorized, Flow keeps a concise artifact model: product truth in `PRD.md`, engineering truth in `ENGINEERING.md`, decisions in `DECISIONS.md`, execution context in `STATE.md`, the canonical work-item DAG in `BACKLOG.yaml`, and a human-readable derived projection in `GRAPH.md`. Work items use `SPEC.md` plus `TASKS.yaml`. `SUMMARY.md` is not part of the model.
94
40
 
95
- ```yaml
96
- parallelism:
97
- strategy: maximum_safe
98
- max_concurrent_work_items: auto
99
- max_concurrent_tasks_per_work_item: auto
100
- delegation: allowed
101
- ```
41
+ In `GRAPH.md`, work-item states are consistent: complete is green, in progress is blue, blocked is red when unfinished dependencies remain, and pending is yellow when all dependencies are complete and the item is ready to execute.
102
42
 
103
- `auto` means the orchestrating agent chooses the largest set it can safely coordinate for the current scheduling cycle. It considers real dependencies, decision dependencies, likely write/contract overlap, uncertainty, runtime/tool capacity, merge risk, and **token/coordination overhead**. It must prefer fewer workers when additional concurrency would waste tokens or lower confidence.
43
+ ## Update
104
44
 
105
- Before work starts, selected work items/tasks are marked `in_progress` with an execution ID. Another chat or agent must respect those claims and choose other ready work. Flow has no automatic claim timeout and never silently steals in-progress work.
45
+ Updates are explicit:
106
46
 
107
- ## Token efficiency
47
+ ```bash
48
+ flow update
49
+ ```
108
50
 
109
- Token efficiency is a framework constraint, not an afterthought. Skills must use the smallest sufficient context, avoid repeatedly loading historical documents, prefer targeted repository inspection, keep canonical artifacts concise, reuse accepted decisions, prefer deterministic gates to extra reviewer agents, and spawn subagents only when the expected parallel benefit exceeds duplicated context and coordination cost.
51
+ `flow update` detects how the active Flow CLI is installed. If the project contains `@caiqueoak/flow`, it updates that project dependency; if the CLI is globally installed, it updates the global package instead. It then refreshes `/flow` for every coding agent configured in `.flow/config.yaml` without modifying canonical project state.
110
52
 
111
- ## Updates
53
+ On Windows, npm is invoked through the command shell so `npm.cmd` can be executed correctly. When Flow is installed as a project dependency, `npx flow update` is equivalent.
112
54
 
113
- `flow update` is explicit and deterministic. The default project template also contains:
55
+ There is no background update check or automatic update mechanism.
114
56
 
115
- ```yaml
116
- updates:
117
- check_on_run: true
118
- auto_update: false
119
- ```
57
+ ## Releases
120
58
 
121
- For now, automatic checks are advisory rather than silently changing the installation. This avoids a framework update changing workflow behavior in the middle of active work. Projects can adopt a newer Flow version intentionally with `flow update`.
59
+ Merges to `main` are released automatically after the test matrix passes. The release pipeline uses npm Trusted Publishing (OIDC), creates a signed npm provenance record, and tags the release; no npm token or manual version bump is needed.
122
60
 
123
- ## Package
61
+ Use Conventional Commit prefixes in the PR title (and retained commits): `fix:` produces a patch, `feat:` a minor, and `feat!:` or a `BREAKING CHANGE:` footer a major release. `docs:`, `test:`, `chore:`, and `ci:` do not publish a package.
124
62
 
125
- The executable is `flow`. The npm package is currently `@caiqueoak/flow` so it does not collide with the pre-existing unscoped `flow` package.
63
+ ## CLI
126
64
 
127
- ```bash
128
- npx @caiqueoak/flow install --target .agents/skills
129
- npx @caiqueoak/flow init
65
+ ```text
66
+ flow init
67
+ flow update
68
+ flow --version
69
+ flow --help
130
70
  ```
131
71
 
132
- ## Releases
133
-
134
- Flow follows [Semantic Versioning](https://semver.org/). A merge to `main` publishes only when the version in `package.json` does not already exist on npm. GitHub Actions runs the test and packaging checks, then publishes the package with provenance. Release PRs must update both `package.json` and `package-lock.json`.
72
+ The CLI bootstraps project-local integrations and configuration. The coding agent plus `/flow` owns discovery, planning, scheduling, delegation, build, gates, review, reconciliation, and state synchronization.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caiqueoak/flow",
3
- "version": "0.2.1",
3
+ "version": "0.3.1",
4
4
  "description": "Readability-first, agent-agnostic software development workflow for coding agents.",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -13,7 +13,6 @@
13
13
  "files": [
14
14
  "src",
15
15
  "skills",
16
- "templates",
17
16
  "README.md",
18
17
  "LICENSE"
19
18
  ],
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: flow
3
+ description: Autonomous, readability-first software delivery workflow. Continue from project state or incorporate new intent, ask only for consequential decisions, then plan, build, validate, reconcile, and continue as far as safely possible.
4
+ ---
5
+
6
+ # Flow
7
+
8
+ ## Public contract
9
+
10
+ `/flow` is the only public workflow skill.
11
+
12
+ - `/flow` with no additional intent continues from `.flow/STATE.md` as far as safely possible.
13
+ - `/flow <freeform intent>` incorporates the intent into current project context and continues appropriately.
14
+ - If `.flow/STATE.md` does not exist, begin global discovery using the idea, repository, or source documents supplied.
15
+
16
+ Do not require the developer to know or invoke internal workflow phases.
17
+
18
+ ## Core principles
19
+
20
+ 1. **Readability first.** Canonical artifacts must be understandable without Flow internals.
21
+ 2. **Decision ownership.** The developer owns consequential product and engineering decisions; the agent executes within approved rules and obvious conventions.
22
+ 3. **Autonomy by default.** Continue until a consequential decision requiring developer input, external approval, unrecoverable blocker, or no-ready-work condition.
23
+ 4. **Just-in-time detail.** Resolve global decisions during discovery and work-item detail only when that item becomes active.
24
+ 5. **Production-aware MVP.** MVP includes product capability plus the technical, infrastructure, quality, deployment, and operational work needed to run it.
25
+ 6. **Parallelism first.** Execute the largest safe independent set while preserving correctness and token efficiency.
26
+ 7. **Automatic synchronization.** Keep state, decisions, PRD, engineering definition, backlog, graph, specs, and tasks aligned.
27
+ 8. **Artifact restraint.** Never create a new project document or artifact unless the developer explicitly requests or authorizes it. Update existing approved artifacts instead whenever possible.
28
+ 9. **Execution continuity.** Do not pause execution merely to report progress, completion, or next steps. Continue automatically while ready work exists. Surface status only when execution has actually stopped or when developer input is required.
29
+
30
+ ## Canonical project artifacts
31
+
32
+ Create artifacts only when they become valid and only when the developer has explicitly requested or authorized their creation. `flow init` creates only `.flow/config.yaml`.
33
+
34
+ Developer-facing knowledge is Markdown:
35
+
36
+ - `.flow/PRD.md` - current global product truth and MVP boundary.
37
+ - `.flow/ENGINEERING.md` - global engineering truth.
38
+ - `.flow/DECISIONS.md` - consequential decision record and rationale.
39
+ - `.flow/STATE.md` - concise current execution/navigation checkpoint and resume context.
40
+ - `.flow/GRAPH.md` - human-readable derived projection of the work-item dependency graph and current readiness state.
41
+ - `.flow/work-items/<folder>/SPEC.md` - readable lifecycle/specification of one work item.
42
+
43
+ Graph/control data is YAML:
44
+
45
+ - `.flow/BACKLOG.yaml` - canonical work-item DAG and work-item state.
46
+ - `.flow/work-items/<folder>/TASKS.yaml` - task DAG and execution ownership.
47
+
48
+ Do not create `SUMMARY.md`, completion logs, ad-hoc progress documents, handoff documents, reports, or any other new project artifact unless the developer explicitly requests or authorizes them. Completed `SPEC.md` files retain concise Overview and Validation sections.
49
+
50
+ `GRAPH.md` is derived only. It must never become an independent source of truth and must be reconciled whenever work-item existence, dependencies, or status change. Preserve its established visual style and conventions while updating it.
51
+
52
+ ## Work item model
53
+
54
+ - `feature` (`F`) - product/user capability.
55
+ - `technical` (`T`) - architecture, infrastructure, platform, quality, deployment, or enabling work.
56
+ - `maintenance` (`M`) - reconciliation, migration, refactor, or corrective work.
57
+
58
+ Folder format is `<three-digit-sequence><kind-code>-<slug>` (for example, `001F-user-profile`). The sequence is a stable readability aid, never execution order. Dependencies determine readiness.
59
+
60
+ Work-item states are derived consistently:
61
+
62
+ - `complete` (`✅`, green) - the item is completed.
63
+ - `in_progress` (`🔵`, blue) - the item has active execution.
64
+ - `blocked` (`🔴`, red) - the item is neither complete nor in progress and at least one work-item dependency is not complete.
65
+ - `pending` (`🟡`, yellow) - the item is neither complete nor in progress and every work-item dependency is complete; it is ready to execute.
66
+
67
+ The graph must use these meanings consistently for nodes and outgoing dependency-line styling.
68
+
69
+ ## Decision authority
70
+
71
+ Apply low-impact and conventional choices automatically. A decision requires developer approval when materially different choices affect product behavior or scope; architecture/public contracts; production infrastructure or cost; persistent data; security/privacy; testing strategy or gates; project-wide conventions; or other work-item assumptions.
72
+
73
+ ## Decision presentation protocol
74
+
75
+ Every requested decision must use this readable structure:
76
+
77
+ ### Decision
78
+
79
+ What needs to be chosen.
80
+
81
+ ### Problem
82
+
83
+ The concrete uncertainty.
84
+
85
+ ### Context
86
+
87
+ Relevant product, engineering, production, and existing-decision context.
88
+
89
+ ### Options
90
+
91
+ Realistic alternatives and trade-offs.
92
+
93
+ ### Recommended option
94
+
95
+ Exactly one recommendation when evidence permits.
96
+
97
+ ### Why recommended
98
+
99
+ Concise justification grounded in current goals and constraints.
100
+
101
+ ### Approach
102
+
103
+ The high-level direction following the recommendation.
104
+
105
+ ### Impact
106
+
107
+ Affected definitions, rules, gates, work items, tasks, or implementation.
108
+
109
+ Never hide a consequential choice inside an implementation plan. Batch the largest currently-known set of independent decisions; do not invent hypothetical questions.
110
+
111
+ ## Decision lifecycle and impact
112
+
113
+ Decision states are `candidate`, `pending_user`, `accepted`, `rejected`, and `superseded`. Preserve the rationale in `DECISIONS.md`. Reconcile pending work before execution, stop only affected in-progress paths, and create maintenance work rather than rewriting completed history.
114
+
115
+ ## Internal workflow routing
116
+
117
+ Load only the reference needed for current state:
118
+
119
+ - Missing state or global definition: `references/discovery.md`
120
+ - Ready/unplanned work: `references/planning.md`
121
+ - Ready planned tasks: `references/build.md`
122
+ - Completed implementation awaiting validation: `references/review.md`
123
+ - Decision impact or inconsistent artifacts: `references/reconcile.md`
124
+
125
+ ## Orchestration loop
126
+
127
+ 1. Read `.flow/config.yaml`.
128
+ 2. Read only the minimum navigation context from `.flow/STATE.md` when present.
129
+ 3. Classify new intent and its impact on canonical truth, backlog, active work, or execution detail.
130
+ 4. Respect work/tasks already `in_progress` under another execution ID.
131
+ 5. Route to the minimal internal reference.
132
+ 6. Claim selected work before parallel execution.
133
+ 7. Continue planning, build, gates, review, fixes/reconciliation, and completion without another invocation.
134
+ 8. Recompute work-item states and readiness after every meaningful transition, synchronize `BACKLOG.yaml`, `STATE.md`, and `GRAPH.md`, and continue if ready work exists.
135
+ 9. Do not stop or return control merely to announce that a task/work item completed or to describe the next step. Stop only when developer input is required for a consequential decision, an external approval is required, an unrecoverable blocker prevents useful progress, or no ready work remains.
136
+
137
+ When execution stops, report the stopping reason and the smallest relevant status summary. During uninterrupted execution, avoid progress-only messages.
138
+
139
+ ## Parallelism and gates
140
+
141
+ `auto` means the largest safe concurrency the orchestrator can reliably coordinate, considering dependencies, shared decisions/files/contracts, integration risk, available capacity, context complexity, and token overhead. It is not unlimited. Prefer one primary orchestrator and delegate only where independent substantial work justifies it.
142
+
143
+ Gates may be deterministic commands or agentic policy checks. Define/refine them during discovery or planning when relevant. Build agents know applicable gates before implementation; review validates requirements, integration, and blocking gates.
144
+
145
+ ## Git and token efficiency
146
+
147
+ Follow the approved Git strategy in `ENGINEERING.md`; by default create one atomic commit per completed task. Read the minimum relevant canonical context, avoid repeated large-document ingestion and duplicate prose, reuse accepted decisions, prefer deterministic checks, and delegate only with narrow ownership/context packets.
@@ -0,0 +1,7 @@
1
+ # Build
2
+
3
+ Compute ready tasks, exclude claims by another execution ID, select the largest safe set, and mark it `in_progress` before editing or delegating. Load only relevant specs, decisions, code, and gates. Follow approved conventions, avoid unrelated refactors, run the cheapest relevant deterministic checks, make atomic commits, and mark tasks complete only after acceptance checks pass.
4
+
5
+ Synchronize `TASKS.yaml`, `BACKLOG.yaml`, `STATE.md`, `GRAPH.md`, and other affected approved canonical artifacts at each meaningful transition. Never create a new document or artifact unless the developer explicitly requested or authorized it. If a consequential new choice emerges, stop only the affected path and present the decision while independent paths continue when safe.
6
+
7
+ Do not pause or return control merely to report that a task or work item completed, to announce progress, or to state the next step. Recompute readiness and continue automatically while useful ready work exists. Surface execution status only when developer input is required or execution has actually stopped.
@@ -0,0 +1,15 @@
1
+ # Global Discovery
2
+
3
+ ## Goal
4
+
5
+ Define the smallest coherent, production-capable MVP and the global product/engineering rules required to plan it. Do not specify work-item detail prematurely.
6
+
7
+ ## Scope
8
+
9
+ Resolve only consequential global decisions affecting the problem, users, MVP, business constraints, production environment, deployment, architecture, persistence, integrations, security, observability, testing, conventions, documentation, Git strategy, and reusable gates. Infer trivial conventions from the existing codebase or chosen ecosystem.
10
+
11
+ ## Outputs
12
+
13
+ Update valid canonical artifacts when their truth changes. Create `PRD.md`, `ENGINEERING.md`, `DECISIONS.md`, `BACKLOG.yaml`, `STATE.md`, `GRAPH.md`, work-item artifacts, or gate definitions only when the developer explicitly requested or authorized creation of that artifact class. Never create substitute, progress, summary, handoff, or ad-hoc documents to capture information that belongs in an existing approved artifact.
14
+
15
+ `GRAPH.md` is a derived human-readable projection of `BACKLOG.yaml`, not an independent source of truth. Discovery ends when no unresolved global decision is needed for a coherent production-capable MVP and initial work-item DAG.
@@ -0,0 +1,7 @@
1
+ # Work-item Planning
2
+
3
+ Read only relevant global decisions, backlog context, existing spec/tasks, and source. Ask consequential work-item decisions only when viable answers materially change behavior, contracts, data semantics, technical boundaries, security, UX, or gates.
4
+
5
+ For an already authorized work-item artifact class, create or update `.flow/work-items/<id>/SPEC.md` with goal, scope/non-goals, relevant decisions, approach, requirements, acceptance criteria, gates, dependencies/impacts, and validation. Create or update `TASKS.yaml` with bounded, testable, independently executable tasks, real blocking dependencies only, and concise acceptance/validation expectations.
6
+
7
+ If the required `SPEC.md` or `TASKS.yaml` does not yet exist and the developer has not explicitly requested or authorized creation of that artifact class, request authorization before creating it. Do not create substitute planning documents. After planning, continue automatically into ready execution instead of stopping to report the plan unless a consequential developer decision is required.
@@ -0,0 +1,5 @@
1
+ # Reconciliation
2
+
3
+ Keep canonical truth and active plans aligned when new intent or accepted decisions affect work. Reconcile pending/planned work before execution, preserve unaffected in-progress work, and create maintenance work for completed work that must change. Preserve superseded decisions with links to their replacements. Update only approved artifacts whose current truth changed, including the derived `GRAPH.md` whenever work-item existence, dependencies, or status change.
4
+
5
+ Never create a new document or artifact during reconciliation unless the developer explicitly requested or authorized it. After reconciliation, recompute readiness and continue execution automatically when safe rather than pausing to report status.
@@ -0,0 +1,5 @@
1
+ # Review
2
+
3
+ Verify completed work against its spec and applicable gates: inspect task completion and diff, validate requirements and acceptance criteria, run deterministic blocking gates, then applicable agentic gates, and check integration/regressions. Create targeted fix tasks within approved scope; request a decision only for consequential new choices. On success, update the spec Overview and Validation, then synchronize `BACKLOG.yaml`, `STATE.md`, `GRAPH.md`, and other affected approved canonical artifacts.
4
+
5
+ Never create a new document or artifact during review unless the developer explicitly requested or authorized it. Do not stop merely to announce successful validation or the next ready work item; return to orchestration and continue while useful ready work exists.