Skip to content

Add optional graphify integration (#49)#50

Merged
jepegit merged 2 commits into
mainfrom
49-add-graphify
May 14, 2026
Merged

Add optional graphify integration (#49)#50
jepegit merged 2 commits into
mainfrom
49-add-graphify

Conversation

@jepegit
Copy link
Copy Markdown
Owner

@jepegit jepegit commented May 14, 2026

Closes #49.

Summary

Adds an opt-in graphify integration to issue-flow.

  • New issue-flow build CLI and /build slash command (with matching /issueflow-build agent skill) wrap the graphify CLI; every extra arg passes through verbatim (--update, --no-viz, --mode deep, --watch, …).
  • issue-flow init / update now run graphify cursor install automatically when the graphify CLI is on PATH; otherwise they print install hints and continue. Never blocks.
  • The scaffolded rules and /issue-start / /issue-close point agents at graphify-out/GRAPH_REPORT.md when present, so they can navigate by graph instead of grepping. /build is off-path — /iflow never auto-dispatches to it.
  • PATH-orphan detection: when graphify is installed but its bin dir isn't on PATH (common after a fresh uv tool install graphifyy without uv tool update-shell and a shell restart), the missing-CLI hint switches to a "found at `` but not on PATH" message that names the directory and tells the user how to fix it.

Install model

Graphify is treated as a separate external CLI, the same way git and gh are:

uv tool install issue-flow
uv tool install graphifyy   # optional; enables /build and graphify cursor install

Initially shipped with a [project.optional-dependencies] graphify = ["graphifyy>=0.7"] extra; this was rolled back before merge because uv tool install only exposes the host package's entry-point scripts on PATH, so an extra (or uv tool install issue-flow --with graphifyy) would have pulled graphifyy in but left the graphify CLI invisible to the shell. The decision is captured in .issueflows/04-designs-and-guides/graphify-integration.md.

Files changed

  • src/issue_flow/graphify.py (new) — is_available, register_with_cursor, run_build, find_orphan_install, install-hint printing.
  • src/issue_flow/dependencies.py — new RECOMMENDED_DEPENDENCIES list (non-blocking) with the graphify entry, plus check_recommended() helper.
  • src/issue_flow/init.py_graphify_postinstall runs at the end of run_init and run_update.
  • src/issue_flow/cli.py — new build Typer command with extra-args passthrough; exits 2 when graphify is missing, propagates graphify's exit code otherwise.
  • src/issue_flow/templating.py — manifest gains commands/build.md.j2 and skills/issueflow_build/SKILL.md.j2 (count: 21 → 23).
  • New scaffold templates: templates/commands/build.md.j2, templates/skills/issueflow_build/SKILL.md.j2.
  • Edits to existing scaffold templates: iflow.md.j2, issue-start.md.j2, issue-close.md.j2, issueflow-rules.mdc.j2, cursor-issue-workflow.md.j2.
  • README.md — new "Optional: graphify integration" section, directory listing updated, issue-flow build documented, callouts explaining why a Python extra / --with doesn't work.
  • .issueflows/04-designs-and-guides/graphify-integration.md (new) — decision record.
  • HISTORY.md[Unreleased] bullet.

Test plan

  • uv run pytest — 100 tests pass (29 new, all hermetic — monkeypatched shutil.which and subprocess.run).
  • uv run ruff check src/ tests/ — clean.
  • Manual smoke: in a sandbox project, run issue-flow init with and without graphify on PATH; verify .cursor/commands/build.md is written, .cursor/skills/issueflow-build/SKILL.md is written, and graphify cursor install is invoked when graphify is installed.
  • Manual smoke: uv tool install graphifyy, ignore the "PATH not set" warning, run issue-flow init, confirm the orphan-detection hint surfaces the actual install path and recommends uv tool update-shell.

Made with Cursor

jepegit and others added 2 commits May 14, 2026 20:41
- Introduced a new optional dependency for graphify in `pyproject.toml`, allowing users to install it via `issue-flow[graphify]`.
- Implemented a new `build` command in the CLI to rebuild the knowledge graph using graphify, forwarding all arguments to the graphify CLI.
- Updated the README to include documentation on the graphify integration and the new `/build` command.
- Enhanced existing templates and commands to reference graphify, including hints for users to run the build command when project structure changes.
- Added tests to ensure the new functionality works as expected and does not disrupt existing workflows.

This integration enhances the project's capabilities by allowing users to generate a queryable knowledge graph, improving the overall workflow experience.
Roll back the [project.optional-dependencies] graphify = ["graphifyy>=0.7"]
entry. uv tool install only puts the host package's entry-point scripts
on PATH, so an extra (or `uv tool install issue-flow --with graphifyy`)
would pull graphifyy into issue-flow's venv but leave the `graphify`
CLI invisible to the shell. The integration now treats graphify like
git/gh: an external CLI installed standalone via `uv tool install
graphifyy` and detected purely via PATH.

Also add PATH-orphan detection: when `graphify` is missing from PATH,
graphify._print_install_hints now probes well-known install dirs
(~/.local/bin and a couple of Windows Scripts dirs) and surfaces a
"found at <path> but not on PATH" message pointing at `uv tool
update-shell` plus a shell/Cursor restart. The plain "missing" branch
also got an "already installed?" tail for the same case.

README, dependencies.py install hints, and the design doc updated to
match. HISTORY.md gets the issue's [Unreleased] bullet. Issue files
moved to .issueflows/03-solved-issues/. 100 tests pass.

Closes #49

Co-authored-by: Cursor <cursoragent@cursor.com>
@jepegit jepegit linked an issue May 14, 2026 that may be closed by this pull request
@jepegit jepegit merged commit 0669885 into main May 14, 2026
1 check passed
@jepegit jepegit deleted the 49-add-graphify branch May 14, 2026 19:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

add graphify

1 participant