@mhd-ghaith-abtah/flow 0.8.0-beta.2 → 0.8.0-beta.3
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/CHANGELOG.md +9 -0
- package/README.md +16 -8
- package/docs/quickstart.md +15 -7
- package/docs/usage.md +46 -26
- package/lib/commands/doctor.js +9 -1
- package/lib/commands/uninstall.js +3 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.8.0-beta.3] — 2026-05-23
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- **`flow doctor` now finds `flow.config.yaml` at the canonical `.claude/flow.config.yaml` path** — surfaced by a real install into kaizenpro. Doctor was checking only the legacy root-level `flow.config.yaml` path while `scaffold()` writes to `.claude/flow.config.yaml`. Result: every fresh install reported `Config ℹ not present (run /flow-init)` even though the file was sitting right there, AND the entire Adapters section was suppressed (it depends on a parsed config). Fix: `probeConfig` checks `.claude/flow.config.yaml` first then falls back to the root path for backward compat. 3 new tests pin the behavior (canonical-found / legacy-fallback / canonical-wins-when-both-exist).
|
|
13
|
+
- **`flow uninstall` now removes `.claude/flow.config.yaml`** — same root cause as the doctor bug. `PROJECT_PATHS` listed only the legacy root-level `flow.config.yaml`, leaving the actually-written canonical file in place after uninstall. Fix: PROJECT_PATHS extended with `.claude/flow.config.yaml` + `.claude/flow.config.local.yaml`; legacy root paths kept for backward compat with pre-`.claude/`-convention installs.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **Docs now recommend `npm install -g` + `flow install-skills --scope project` as the canonical slash-command setup** — surfaced by dogfooding the `npx`-only path into kaizenpro. The pure-npx flow produces symlinks pointing at `~/.npm/_npx/<hash>/node_modules/...` which npm rotates over time; when the cache entry is purged, slash commands silently stop resolving with no error. Single `npm install -g` provides a stable symlink target at `/opt/homebrew/lib/node_modules/...` that survives until `npm uninstall`. README install section + `docs/quickstart.md` + `docs/usage.md §1` all rewritten to lead with the project-scope pattern and demote pure-npx to a "works but with caveats" section (§1d). Rationale: project-scope keeps slash commands out of unrelated Claude Code sessions; stable symlinks mean no broken-pointer debugging when the npx cache rotates. `npx -y ... install-skills --scope project` still works for one-off use, just less durable.
|
|
17
|
+
|
|
9
18
|
## [0.8.0-beta.2] — 2026-05-23
|
|
10
19
|
|
|
11
20
|
### Fixed
|
package/README.md
CHANGED
|
@@ -20,18 +20,21 @@ Existing per-story workflows are token-heavy. BMad's create-story re-reads epics
|
|
|
20
20
|
|
|
21
21
|
## Install
|
|
22
22
|
|
|
23
|
-
> **Status (v0.
|
|
23
|
+
> **Status (v0.8.0-beta.2, published 2026-05-23):** Flow is live on npm via the `@beta` dist-tag. `@latest` still points at the older `0.7.2-beta.0` and gets promoted from `@beta` after a soak window with no critical issues. Pin to `@beta` for the new headless install + project-scope ECC + bug fixes.
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
# 1. Install the Node CLI
|
|
26
|
+
# 1. Install the Node CLI (once per machine)
|
|
27
27
|
npm install -g @mhd-ghaith-abtah/flow@beta
|
|
28
|
-
flow
|
|
28
|
+
flow --version # → 0.8.0-beta.2
|
|
29
29
|
|
|
30
|
-
# 2.
|
|
31
|
-
/
|
|
30
|
+
# 2. Per project — symlink the 4 skills into THIS project's .claude/skills/
|
|
31
|
+
cd /path/to/project
|
|
32
|
+
flow install-skills --scope project --force # ← recommended scope for slash commands
|
|
32
33
|
|
|
33
|
-
#
|
|
34
|
-
flow init --profile standard --yes #
|
|
34
|
+
# 3. Pick an install path:
|
|
35
|
+
flow init --profile standard --yes # headless: detect → upstreams → MCPs → scaffold
|
|
36
|
+
# OR, inside Claude Code opened in this project:
|
|
37
|
+
/flow-init # interactive
|
|
35
38
|
|
|
36
39
|
# Useful at any point:
|
|
37
40
|
flow plan --profile standard # preview without executing
|
|
@@ -42,7 +45,12 @@ git clone https://github.com/mhd-ghaith-abtah/flow.git
|
|
|
42
45
|
cd flow && npm install && tools/dev-link.sh # dev-mode equivalent of install-skills + PATH link
|
|
43
46
|
```
|
|
44
47
|
|
|
45
|
-
The `flow install-skills` step is what makes `/flow-init` resolve in Claude Code
|
|
48
|
+
The `flow install-skills --scope project` step is what makes `/flow-init` resolve in Claude Code when opened inside the project. Two reasons project scope is the recommended default:
|
|
49
|
+
|
|
50
|
+
1. **Reliable symlinks.** They point at the stable `/opt/homebrew/lib/node_modules/...` path (or your equivalent npm prefix), so they don't break the way `npx`-based symlinks do when the npx cache rotates.
|
|
51
|
+
2. **No skill pollution elsewhere.** Slash commands only resolve inside this project, not in every Claude Code session you ever open.
|
|
52
|
+
|
|
53
|
+
If you'd rather have `/flow-*` available globally on your machine, swap step 2 for `flow install-skills` (no `--scope` flag — defaults to `home` / `~/.claude/skills/`). For `npx`-only / no-global-install setups, see [docs/usage.md §1d](docs/usage.md#d-npx--no-install-but-with-a-caveat) — works but requires re-linking before each session. Full guide: [docs/usage.md](docs/usage.md).
|
|
46
54
|
|
|
47
55
|
The installer detects your project shape, then:
|
|
48
56
|
- Installs Flow's four skills (`flow-init`, `flow-sprint`, `flow-story`, `flow-doctor`)
|
package/docs/quickstart.md
CHANGED
|
@@ -11,20 +11,28 @@ A 10-minute path from zero to first shipped story.
|
|
|
11
11
|
## Install
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
# 1. Install the Node CLI
|
|
14
|
+
# 1. Install the Node CLI (once per machine)
|
|
15
15
|
npm install -g @mhd-ghaith-abtah/flow@beta
|
|
16
|
-
flow --version # → 0.8.0-beta.
|
|
16
|
+
flow --version # → 0.8.0-beta.2 (or newer)
|
|
17
17
|
|
|
18
|
-
# 2.
|
|
19
|
-
|
|
18
|
+
# 2. Per project — symlink the 4 skills into THIS project's .claude/skills/
|
|
19
|
+
cd /path/to/your/project
|
|
20
|
+
flow install-skills --scope project --force # ← recommended for slash commands
|
|
20
21
|
|
|
21
|
-
# 3. Pick a path
|
|
22
|
+
# 3. Pick a path:
|
|
22
23
|
flow init --profile mini --yes # headless (no Claude Code needed)
|
|
23
|
-
# OR, inside Claude Code:
|
|
24
|
+
# OR, inside Claude Code opened in this project:
|
|
24
25
|
/flow-init # interactive Q&A
|
|
25
26
|
```
|
|
26
27
|
|
|
27
|
-
`flow install-skills` is the bridge — npm puts Flow in
|
|
28
|
+
`flow install-skills --scope project` is the bridge — npm puts Flow in `/opt/homebrew/lib/node_modules/...` but Claude Code only resolves slash commands from a scanned path (`~/.claude/skills/` for home scope, `<project>/.claude/skills/` for project scope). Per-project scope is the recommended default because:
|
|
29
|
+
|
|
30
|
+
- Symlinks point at a stable path that survives until you `npm uninstall`
|
|
31
|
+
- Slash commands only appear inside this project, not in every unrelated Claude Code session
|
|
32
|
+
|
|
33
|
+
Re-run `flow install-skills --scope project --force` after every Flow upgrade (`npm install -g @mhd-ghaith-abtah/flow@beta`) to refresh the symlinks. It's idempotent.
|
|
34
|
+
|
|
35
|
+
If you'd rather have `/flow-*` available globally on your machine instead of per-project, omit the `--scope` flag — `flow install-skills` defaults to `home` scope (`~/.claude/skills/`). See [usage.md §1](usage.md#1-installation-paths) for the full breakdown.
|
|
28
36
|
|
|
29
37
|
## What the installer does
|
|
30
38
|
|
package/docs/usage.md
CHANGED
|
@@ -34,51 +34,73 @@ This is the long-form reference. For the 10-minute first-install path, see [quic
|
|
|
34
34
|
|
|
35
35
|
Flow ships in two surfaces: a Claude Code skill bundle (interactive) and a Node CLI (`flow`, headless). Both invoke the same underlying installers and write the same files.
|
|
36
36
|
|
|
37
|
-
**Bootstrap order matters.** Claude Code discovers slash commands by scanning `~/.claude/skills/<name
|
|
37
|
+
**Bootstrap order matters.** Claude Code discovers slash commands by scanning `~/.claude/skills/<name>/` (home scope) or `<project>/.claude/skills/<name>/` (project scope). The npm package puts skill files in the install location (typically `/opt/homebrew/lib/node_modules/...` on macOS Homebrew node, or `~/.npm-global/lib/node_modules/...` on other setups), NOT in any of Claude Code's discovery paths. You need to run `flow install-skills` once to symlink the four skills into a discovery path.
|
|
38
38
|
|
|
39
|
-
### a.
|
|
39
|
+
### a. Recommended: `npm install -g` + `flow install-skills --scope project` (per project)
|
|
40
|
+
|
|
41
|
+
This is the right shape if you want **reliable slash commands** in one or more projects without polluting Claude Code's global skill set.
|
|
40
42
|
|
|
41
43
|
```bash
|
|
42
|
-
# 1.
|
|
44
|
+
# 1. Once on your machine — installs the `flow` CLI + provides a stable symlink target
|
|
43
45
|
npm install -g @mhd-ghaith-abtah/flow@beta
|
|
44
|
-
flow --version
|
|
46
|
+
flow --version # → 0.8.0-beta.2 (or newer)
|
|
45
47
|
|
|
46
|
-
# 2.
|
|
47
|
-
|
|
48
|
+
# 2. Per project — symlink the four skills into the project's .claude/skills/
|
|
49
|
+
cd /path/to/project
|
|
50
|
+
flow install-skills --scope project --force
|
|
48
51
|
|
|
49
|
-
# 3.
|
|
50
|
-
flow init --profile mini --yes
|
|
51
|
-
# OR, inside Claude Code:
|
|
52
|
-
/flow-init
|
|
52
|
+
# 3. Pick your install path
|
|
53
|
+
flow init --profile mini --yes # headless
|
|
54
|
+
# OR, inside Claude Code opened in this project:
|
|
55
|
+
/flow-init # interactive
|
|
53
56
|
```
|
|
54
57
|
|
|
55
|
-
|
|
58
|
+
Why this combination is the best default for slash commands:
|
|
59
|
+
|
|
60
|
+
- The symlinks point at `/opt/homebrew/lib/node_modules/@mhd-ghaith-abtah/flow/skills/...` — a stable path that persists until you `npm uninstall`. **Never breaks** under normal use.
|
|
61
|
+
- Project-scope means `/flow-*` only resolves when Claude Code is opened inside the project. No skill pollution in unrelated projects.
|
|
62
|
+
- One `npm install -g` covers any number of projects — install-skills per project is the only per-project bootstrap step.
|
|
63
|
+
- Upgrading Flow (`npm install -g @mhd-ghaith-abtah/flow@beta` again later) automatically refreshes every project's symlinks. No re-bootstrap needed.
|
|
64
|
+
|
|
65
|
+
### b. Variant: `npm install -g` + `flow install-skills` (user-wide)
|
|
66
|
+
|
|
67
|
+
If you'd rather have slash commands available **everywhere** on your machine instead of per-project:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npm install -g @mhd-ghaith-abtah/flow@beta
|
|
71
|
+
flow install-skills # default scope: home (~/.claude/skills/)
|
|
72
|
+
```
|
|
56
73
|
|
|
57
|
-
|
|
74
|
+
Now `/flow-init` resolves in every Claude Code session. Re-run `flow install-skills` after each `npm install -g` upgrade.
|
|
58
75
|
|
|
59
|
-
|
|
76
|
+
### c. install-skills scope flag
|
|
60
77
|
|
|
61
78
|
```bash
|
|
62
|
-
flow install-skills
|
|
63
|
-
flow install-skills --scope home
|
|
64
|
-
flow install-skills --scope project
|
|
65
|
-
flow install-skills --scope both
|
|
66
|
-
flow install-skills --dry-run
|
|
67
|
-
flow install-skills --force
|
|
79
|
+
flow install-skills # default: --scope home
|
|
80
|
+
flow install-skills --scope home # user-wide ~/.claude/skills/
|
|
81
|
+
flow install-skills --scope project # team-commit: <cwd>/.claude/skills/
|
|
82
|
+
flow install-skills --scope both # both
|
|
83
|
+
flow install-skills --dry-run # preview
|
|
84
|
+
flow install-skills --force # replace existing real dirs
|
|
68
85
|
```
|
|
69
86
|
|
|
70
|
-
|
|
87
|
+
`--scope project` is the team-commit pattern. Commit `<project>/.claude/skills/flow-*` so any contributor cloning the repo gets the slash commands automatically once they `npm install -g @mhd-ghaith-abtah/flow@beta` on their own machine. The symlinks point at each contributor's local npm install location, so the path is per-machine; what's committed is the four symlink files themselves.
|
|
71
88
|
|
|
72
|
-
###
|
|
89
|
+
### d. `npx` — no install, but with a caveat
|
|
73
90
|
|
|
74
91
|
```bash
|
|
75
|
-
npx -y @mhd-ghaith-abtah/flow@beta install-skills
|
|
92
|
+
npx -y @mhd-ghaith-abtah/flow@beta install-skills --scope project --force
|
|
76
93
|
npx -y @mhd-ghaith-abtah/flow@beta init --profile mini --yes
|
|
77
94
|
```
|
|
78
95
|
|
|
79
|
-
|
|
96
|
+
Works for an immediate session, BUT the symlinks point at the npx cache (`~/.npm/_npx/<hash>/node_modules/...`), which npm rotates over time. When the cache entry is purged, the symlinks become broken pointers and `/flow-init` stops resolving with no error. Two ways to handle this:
|
|
80
97
|
|
|
81
|
-
|
|
98
|
+
- **Re-run `npx ... install-skills --scope project --force` before each session that needs slash commands.** Refreshes the symlinks against whatever the current npx cache hash is. Easy to forget.
|
|
99
|
+
- **Or just use path (a) — single `npm install -g` + per-project `flow install-skills`.** Stable symlinks, slash commands always resolve.
|
|
100
|
+
|
|
101
|
+
`npx` is fine for one-shot use (`flow plan`, `flow doctor`, one-off `flow init`), but for ongoing slash-command access prefer the npm-install-g path.
|
|
102
|
+
|
|
103
|
+
### e. Development clone (contributors)
|
|
82
104
|
|
|
83
105
|
```bash
|
|
84
106
|
git clone https://github.com/mhd-ghaith-abtah/flow.git
|
|
@@ -87,8 +109,6 @@ cd flow && npm install && tools/dev-link.sh
|
|
|
87
109
|
|
|
88
110
|
`tools/dev-link.sh` is the dev-mode equivalent of `flow install-skills --scope home` — symlinks the four `skills/flow-*` dirs into `~/.claude/skills/` AND puts `flow` on `$PATH` from your clone. Use when you're contributing so changes to skill workflows take effect immediately.
|
|
89
111
|
|
|
90
|
-
`tools/dev-link.sh` symlinks your clone into `$HOME/.claude/skills/flow-*` and onto `$PATH` as `flow`. Use when you're contributing.
|
|
91
|
-
|
|
92
112
|
### e. Verifying the install
|
|
93
113
|
|
|
94
114
|
```bash
|
package/lib/commands/doctor.js
CHANGED
|
@@ -131,9 +131,17 @@ function probeJson(path, scope) {
|
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
function probeConfig(ctx) {
|
|
134
|
-
|
|
134
|
+
// Canonical path is .claude/flow.config.yaml (where scaffold writes).
|
|
135
|
+
// Legacy root-level flow.config.yaml is checked as a fallback for installs
|
|
136
|
+
// done before the .claude/ convention. First-match-wins.
|
|
137
|
+
const canonicalPath = join(ctx.cwd, '.claude', 'flow.config.yaml');
|
|
138
|
+
const legacyPath = join(ctx.cwd, 'flow.config.yaml');
|
|
139
|
+
const path = existsSync(canonicalPath) ? canonicalPath : legacyPath;
|
|
135
140
|
const r = { path, status: '✗', error: null, parsed: null };
|
|
136
141
|
if (!existsSync(path)) {
|
|
142
|
+
// Surface the canonical path in the "not present" hint so users know
|
|
143
|
+
// where to look (or where the install would write to next time).
|
|
144
|
+
r.path = canonicalPath;
|
|
137
145
|
r.status = 'ℹ';
|
|
138
146
|
r.error = 'not present (run /flow-init)';
|
|
139
147
|
return r;
|
|
@@ -26,7 +26,9 @@ const HOME_PATHS = [
|
|
|
26
26
|
|
|
27
27
|
const PROJECT_PATHS = [
|
|
28
28
|
'.claude/flow',
|
|
29
|
-
'flow.config.yaml',
|
|
29
|
+
'.claude/flow.config.yaml', // canonical (where scaffold writes)
|
|
30
|
+
'.claude/flow.config.local.yaml',
|
|
31
|
+
'flow.config.yaml', // legacy root-level (for backward compat)
|
|
30
32
|
'flow.config.local.yaml'
|
|
31
33
|
];
|
|
32
34
|
|