Conversation
BREAKING: install.sh/uninstall.sh/shell functions/bash bin scripts are gone. The kit is now 'npm i -g' + one Node >=22 CLI with four porcelain verbs (setup/status/sync/uninstall) and an x-plumbing namespace, per the definitive command surface. Zero runtime dependencies (node:sqlite, node:test). - src/lib: paths (XDG/%APPDATA%), exec (argv-only, .cmd shims), settings (backup-first merges), blocks (sentinel upsert/strip, CRLF-safe, user- extensible registry w/ declarative detectors in kit.json), sqlite, daemons (pidfile-first + ps/CIM sweep), versions (drift cache), mcp (family enumeration + deny rules), natives, rvf (FLVR quarantine), statusline (footer inject; template extracted verbatim from the shell heredoc), heal - commands: status (dashboard, --json/--hint), sync (plan->apply->prove, --dry-run/--no-upgrade), setup (machine+project), uninstall (incl. legacy shell-kit migration); x: daemon-gc, mcp, reference, verify, improvement-eval - docs: BACKGROUND/TROUBLESHOOTING/CONDITIONAL-BLOCKS/README archived as 2026-07-14-shell-kit-*; new short README + npm-command TROUBLESHOOTING - claude/ templates re-pointed at ruflo-kit verbs; installed CLAUDE.md blocks reconciled via 'x reference sync' - tests: 19 node:test units + statusline suite (reads the extracted template) Verified live: status caught real drift (3.29.0 release, natives regression after the aidefence install, recurring FLVR brain.rvf corruption); sync converged it; x verify learning/security green; golden parity vs the bash patch-native checker before its removal.
… workflow - ci.yml: unit + statusline tests (zero-dep, no install step) + a sandboxed-HOME CLI smoke (status --json shape, managed-block round-trip, uninstall --dry-run) on ubuntu/macos/windows × Node 22/24/26 - nightly.yml: installs REAL latest ruflo+agentic-qe (allow-scripts) and gates on the kit being able to heal them (sync --no-upgrade → status; x verify security/learning) — catches upstream drift like ruvnet/ruflo#2670 the day it ships - release.yml: tag-driven npm publish with provenance; NPM_TOKEN repo secret; tag↔package.json version guard; prereleases → 'next' dist-tag, releases → 'latest' (github.ref_name passed via env, no inline event interpolation)
…on-setup v6, pnpm publish --provenance) Runtime surface deliberately stays npm: the kit heals npm-managed global ruflo/agentic-qe trees (lib/heal.mjs, paths.mjs globalRoot) — that is the target environment, and the nightly lane keeps simulating it with npm i -g. pnpm-managed-globals support is a tracked follow-up.
…entic-kit - package: @pacphi/agentic-kit, bins agentic-kit + ak (AutoKitteh's 'ak' noted in README as a known PATH neighbor; full command always works) - GitHub repo renamed (old ruflo-machine-ref URLs redirect) - command references swept to 'ak …' across src/, bin help, README, TROUBLESHOOTING, claude/ templates (republished to the live CLAUDE.md); archive files stay frozen - config dir migrates ~/.config/ruflo → ~/.config/agentic-kit (read-fallback in loadKitConfig; saves land at the new path); uninstall's legacy cleanup keeps targeting the ruflo-era dir and now removes all shell-era ruflo-* bins - compat surfaces intentionally unchanged: CLAUDE.md sentinel slugs (ruflo-*), statusline ruflo-seg marker, runtime npm calls
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
v4: the kit becomes an npm-installable, cross-platform CLI. The bash era (install.sh, uninstall.sh, sourced shell functions, six bash bin scripts) is deleted; in its place:
npm i -g+ one zero-dependency Node ≥22 CLI,ruflo-kit, with four porcelain verbs and a plumbing namespace. The shell kit's final state is preserved at tagv3-shell-finalas the retreat point.Command surface (state-convergence model)
Design rules: every mutating verb has
--dry-run; prompts persist to~/.config/ruflo/kit.json(ask once); drift nudge on every invocation (cached, 24h TTL);--helpshows 4 verbs,--help --allshows plumbing.What ported (behavior-preserving)
lib/blocks.mjs— format unchanged (shell-kit installs upgrade in place), registry now user-extensible (custom rows + declarativecommand|dir|file|glob-dirdetectors in kit.json, no eval'd shell)src/templates/statusline-footer.cjs; injector is CRLF-safe with anode --checkrollback gate@claude-flow/aidefencereinstall (security defend non-functional on 3.28.0: @claude-flow/aidefence dropped from the dependency tree but still imported — banner-only output, error silently swallowed ruvnet/ruflo#2670), FLVR corrupt-lock + oversized RVF quarantine (filed upstream as Interrupted brain.rvf export leaves truncated store + FLVR-content .rvf.lock → permanent FsyncFailed; stale-lock self-heal misses it (export is delete-then-rewrite-in-place) proffesor-for-testing/agentic-qe#563), absolute DB-path pin + store→disk write verification, daemon default-on local-only policy, MCP family picker → exactpermissions.denyrulessqlite3binary andpython3dependencies eliminated (node:sqlite);psparsing replaced by pidfile-first daemon discovery with aps/Get-CimInstancesweep fallbackDocs simplified (per review direction)
BACKGROUND, TROUBLESHOOTING, CONDITIONAL-BLOCKS, and the old README archived as
docs/archive/2026-07-14-shell-kit-*(index updated). New README (~90 lines: why + four commands) and a short symptom→command TROUBLESHOOTING table.CI/CD
v4*tag → test gate → tag↔version guard →npm publish --provenance(NPM_TOKENsecret; prereleases →next)Verified live on this machine
statuscaught real drift (ruflo 3.29.0 release nudge; a genuine natives regression; recurring FLVR brain.rvf corruption) andsyncconverged it — natives cross-checked against the bashruflo-patch-native --checkbefore its deletionx verify learning(real train cycle → patterns persist) andx verify security(defend exit 1=threat / 0=clean) passnpm i -g .→ globalruflo-kitbin works; CI smoke sequence replicated locally in a sandbox HOMEKnown debt (deliberate)
Windows is CI-tested from this PR onward but hasn't run on real hardware; the 20-check parity test wasn't ported (tracked for a later phase);
setup's fresh-machine path hasn't run on a clean VM (nightly lane approximates it).Before first npm release (repo owner)
NPM_TOKENActions secret (npm Automation token).ruflo-machine-kitis free on npm or switch to a scoped name.🤖 Generated with Claude Code