Repository navigation
v1.1.6
Found by running bootstrap on a real C++/Python repo with no package.json, on Windows.
- Any language, no npm.
installcopies a ~0.5 MB runtime to.agent-flow-runtime/for the guard hooks (Claude, Gemini, Codex, Cursor) when agent-flow isn't in the project'snode_modules, or with--vendor. It used to refuse and tell you tonpm install -D. Commit the folder; the pre-commit hook finds it too. The guard treats it as hook wiring, andaudit-risk,scanandclassifyignore it. The skills no longer claim a devDependency. installkeeps.agent-flow/(audit log, gate logs, backups) out of git through.git/info/exclude, and its next steps say what to commit.- Behavior change on Windows: string gates run in Git Bash, not
cmd.exe. Gate commands come from CI files and READMEs, which are POSIX; undercmd.exethey failed and looked like test failures. A gate written forcmd.exe(.\scripts\check.bat,set X=1 && …) now needsAGENT_FLOW_SHELL=cmd.exe, or anos-specific rewrite. Details: String gates went throughcmd.exe, so every POSIX command (./build.sh, aforloop, the commandsscanreads from CI) failed and looked like a test failure.AGENT_FLOW_SHELLoverrides. A command the shell itself can't start is now an environment error (exit 2); a 126/127 from inside a script is still that script's failure. oson a gate (["linux"]): elsewhere the gate is reported as skipped, never as a pass, and CI judges it. For builds that need a Linux toolchain or a POSIX filesystem.agent-flow manifest sync [--yes]rebuildscontext_filesfrom the context files on disk (newAGENTS.mdfiles, install'sCLAUDE.md, the paths their prose names) and keepsprotected_paths,risk_boundaries,gatesand every other key. Bootstrap and the gardener use it instead of editing references by hand. Roles withoutbootstrap_writecan't run it.scanfinds commands in CI workflow steps, including each plain line of arun: |block (loops, continuations and lines with variables are left out), and inbuild.sh/test.sh, so a repo with nopackage.jsonor Makefile no longer reports none. Three or more sibling commands collapse into one…/<name>.py (N files)line.- CODEOWNERS without the friction. A missing or partial
CODEOWNERSis now one quiet note, not a warning: the guard and pre-commit hook already protect against local agents, and CODEOWNERS only matters for pull requests pushed from elsewhere.agent-flow codeowners [--yes] [--owner @x]previews, then appends the lines (owner fromorigin); an existing file is appended to, never replaced. When the lines are in place and a logged-inghis available,doctoralso reports whether GitHub really requires Code Owner review (rulesets and classic protection); with nogh, no login or no network it says nothing, never asks for a token, and--offline/AGENT_FLOW_OFFLINE=1skips the call. Solo repos are told that requiring it blocks their own PRs. doctor --allow-stalereports stale context without failing, anddoctor --allow-stalereports stale context without failing (for CI on every push; broken paths, schema problems and placeholders still fail). Without it, a repo's CI went red 30 days after setup with no change.- The OpenCode plugin finds the CLI relative to itself (the vendored runtime or
node_modules) instead of the absolute path of whichever copy raninstall, so it works in every clone. - Bootstrap skill: the secrets gate offers fake / real / keep-flagged instead of only stopping; a new gates step (where each can run, timeouts,
on_stop); glob and highest-level-wins rules spelled out;manifest syncforcontext_files; Phase 6 runs the gates and sorts every failure; CODEOWNERS and CI steps without Node in the project; the repo's own rules bind bootstrap. - Guard: an unquoted glob that expands to an env file or a
deny_readpath (cat .e*) is a secret read, like naming the file. - Guard: a recursive search (
grep -r,rg --hidden) over a directory that holds an env file or adeny_readpath is a secret read;rgwithout--hiddenskips dotfiles as it does itself.