Add optional graphify integration (#49)#50
Merged
Merged
Conversation
- 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>
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.
Closes #49.
Summary
Adds an opt-in graphify integration to issue-flow.
issue-flow buildCLI and/buildslash command (with matching/issueflow-buildagent skill) wrap thegraphifyCLI; every extra arg passes through verbatim (--update,--no-viz,--mode deep,--watch, …).issue-flow init/updatenow rungraphify cursor installautomatically when thegraphifyCLI is on PATH; otherwise they print install hints and continue. Never blocks./issue-start//issue-closepoint agents atgraphify-out/GRAPH_REPORT.mdwhen present, so they can navigate by graph instead of grepping./buildis off-path —/iflownever auto-dispatches to it.graphifyis installed but its bin dir isn't on PATH (common after a freshuv tool install graphifyywithoutuv tool update-shelland 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
gitandghare:uv tool install issue-flow uv tool install graphifyy # optional; enables /build and graphify cursor installInitially shipped with a
[project.optional-dependencies] graphify = ["graphifyy>=0.7"]extra; this was rolled back before merge becauseuv tool installonly exposes the host package's entry-point scripts on PATH, so an extra (oruv tool install issue-flow --with graphifyy) would have pulledgraphifyyin but left thegraphifyCLI 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— newRECOMMENDED_DEPENDENCIESlist (non-blocking) with the graphify entry, pluscheck_recommended()helper.src/issue_flow/init.py—_graphify_postinstallruns at the end ofrun_initandrun_update.src/issue_flow/cli.py— newbuildTyper command with extra-args passthrough; exits2when graphify is missing, propagates graphify's exit code otherwise.src/issue_flow/templating.py— manifest gainscommands/build.md.j2andskills/issueflow_build/SKILL.md.j2(count: 21 → 23).templates/commands/build.md.j2,templates/skills/issueflow_build/SKILL.md.j2.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 builddocumented, callouts explaining why a Python extra /--withdoesn'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 — monkeypatchedshutil.whichandsubprocess.run).uv run ruff check src/ tests/— clean.issue-flow initwith and withoutgraphifyon PATH; verify.cursor/commands/build.mdis written,.cursor/skills/issueflow-build/SKILL.mdis written, andgraphify cursor installis invoked when graphify is installed.uv tool install graphifyy, ignore the "PATH not set" warning, runissue-flow init, confirm the orphan-detection hint surfaces the actual install path and recommendsuv tool update-shell.Made with Cursor