Graphify-Labs/graphify · error · RuntimeError
graphify install is incomplete: missing always-on block '{ba
Error message
graphify install is incomplete: missing always-on block '{basename}' at {path}. Reinstall graphifyy (e.g. `uv tool install --reinstall graphifyy`). What it means
Raised when the installer tries to read one of the packaged 'always-on' markdown skill blocks (graphify/always_on/<name>.md) and gets an OSError — file missing or unreadable. These blocks are human-edited fragments injected verbatim by _replace_or_append_section and drift-checked by `skillgen --check`; the error deliberately fires at use-time (not import-time) so a broken packaging job can't brick every CLI command, and names the reinstall command.
Source
Thrown at graphify/install.py:54
def _always_on(basename: str) -> str:
"""Read a packaged always-on instruction block from graphify/always_on/.
The six always-on blocks (CLAUDE.md / AGENTS.md / GEMINI.md / VS Code
Copilot instructions / Antigravity rules / Kiro steering) live as committed
markdown next to this module, generated by tools/skillgen from a single
human-edited fragment and guarded against drift by ``skillgen --check``. The
installer injects them verbatim via ``_replace_or_append_section``, so the
bytes here must match the former triple-quoted constant exactly — the
always-on-roundtrip validator proves that.
"""
path = Path(__file__).parent / "always_on" / f"{basename}.md"
try:
return path.read_text(encoding="utf-8")
except OSError as exc:
# Defer to use-time so a missing/corrupt packaged block can't crash module
# import (which would brick every CLI command, not just install). Reached
# only by an install/integration path that actually needs this block.
raise RuntimeError(
f"graphify install is incomplete: missing always-on block '{basename}' "
f"at {path}. Reinstall graphifyy (e.g. `uv tool install --reinstall graphifyy`)."
) from exc
def _refresh_all_version_stamps() -> None:
"""After a successful install, update .graphify_version in all other known skill dirs.
Prevents stale-version warnings from platforms that were installed previously
but not explicitly re-installed during this upgrade.
"""
for name in _PLATFORM_CONFIG:
skill_dst = _platform_skill_destination(name)
vf = skill_dst.parent / ".graphify_version"
if skill_dst.exists():
vf.write_text(__version__, encoding="utf-8")
def _platform_skill_destination(platform_name: str, *, project: bool = False, project_dir: Path | None = None) -> Path:
"""Return the skill destination for a platform and scope."""
if platform_name == "gemini":
if project:View on GitHub (pinned to 7fe58b0b0f)
Solutions
- Reinstall the tool cleanly: `uv tool install --reinstall graphifyy` (or `pipx install --force graphifyy` / `pip install --force-reinstall graphifyy`)
- Verify the block exists afterwards: ls <site-packages>/graphify/always_on/ should show the named .md file
- If building from source, check packaging config includes the always_on package data and rebuild
Example fix
# before graphify install # RuntimeError: graphify install is incomplete: missing always-on block 'core' at ... # after uv tool install --reinstall graphifyy graphify install
Defensive patterns
Strategy: validation
Validate before calling
from pathlib import Path
import graphify
always_on_dir = Path(graphify.__file__).parent / "always_on"
missing = [p.name for p in always_on_dir.glob("*.md")]
if not missing:
raise SystemExit(
"graphify package data incomplete (no always_on blocks) - "
"reinstall: uv tool install --reinstall graphifyy"
) Try / catch
try:
from graphify.install import install_all
install_all()
except RuntimeError as e:
if "install is incomplete" in str(e):
subprocess.check_call(["uv", "tool", "install", "--reinstall", "graphifyy"])
install_all()
else:
raise Prevention
- Smoke-test `graphify install` right after installing or upgrading the tool
- When packaging graphify yourself, include always_on/*.md as package data and run `skillgen --check` in CI
- Avoid interrupted/parallel upgrades of the uv/pipx tool install - reinstall atomically
When it happens
Trigger: Running `graphify install` (skill/platform installation) from an install whose package data is incomplete: a wheel built without the always_on/*.md files (exclusion filters, MANIFEST issues), a partially overwritten uv/pipx tool install, or filesystem-level deletion/corruption of those files.
Common situations: Upgrading a tool install that got interrupted mid-write; building from source with aggressive packaging excludes; container images copying site-packages selectively; permission damage making the .md unreadable.
Related errors
- graph not found: {source_path}
- the '{pkg}' package is required for this backend but is not
- the 'anthropic' package is required for this backend but is
- Claude Code CLI not found on $PATH. Install from https://cla
- Azure OpenAI requires the openai package. Run: pip install o
AI-assisted analysis of Graphify-Labs/graphify@7fe58b0b0f (2026-08-14).
Data as JSON: /api/errors/137e7ad04743baef.
Report an issue: GitHub.