issue-flow 0.4.1b2__tar.gz → 0.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. issue_flow-0.4.2/PKG-INFO +298 -0
  2. issue_flow-0.4.2/README.md +271 -0
  3. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/pyproject.toml +7 -2
  4. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/__init__.py +1 -1
  5. issue_flow-0.4.2/src/issue_flow/agent.py +957 -0
  6. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/cli.py +213 -5
  7. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/config.py +166 -8
  8. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/dependencies.py +2 -6
  9. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/gitutils.py +67 -6
  10. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/graphify.py +5 -16
  11. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/init.py +73 -32
  12. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/modes.py +298 -3
  13. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/modes.toml +2 -0
  14. issue_flow-0.4.2/src/issue_flow/project.py +170 -0
  15. issue_flow-0.4.2/src/issue_flow/step_profiles.py +126 -0
  16. issue_flow-0.4.2/src/issue_flow/step_profiles.toml +22 -0
  17. issue_flow-0.4.2/src/issue_flow/templates/commands/iflow-archive.md.j2 +63 -0
  18. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-cleanup.md.j2 +4 -0
  19. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-close.md.j2 +18 -4
  20. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-fix.md.j2 +4 -0
  21. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-graphify.md.j2 +2 -0
  22. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-init.md.j2 +4 -0
  23. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-pause.md.j2 +4 -0
  24. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-pick.md.j2 +20 -0
  25. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-plan.md.j2 +4 -0
  26. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-start.md.j2 +5 -0
  27. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-status.md.j2 +4 -0
  28. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow-yolo.md.j2 +11 -7
  29. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/iflow.md.j2 +5 -1
  30. issue_flow-0.4.2/src/issue_flow/templates/designs/python-quality-tools.md.j2 +122 -0
  31. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/docs/issue-workflow.md.j2 +48 -17
  32. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/docs/this-project.md.j2 +1 -0
  33. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/rules/_body.md.j2 +42 -3
  34. issue_flow-0.4.2/src/issue_flow/templates/rules/issueflow-rules.mdc.j2 +9 -0
  35. issue_flow-0.4.2/src/issue_flow/templates/skills/_invocation_forms.md.j2 +5 -0
  36. issue_flow-0.4.2/src/issue_flow/templates/skills/_model_directive.md.j2 +22 -0
  37. issue_flow-0.4.2/src/issue_flow/templates/skills/_resolve_project_root.md.j2 +20 -0
  38. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/caveman/SKILL.md.j2 +1 -1
  39. issue_flow-0.4.2/src/issue_flow/templates/skills/iflow_archive/SKILL.md.j2 +76 -0
  40. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_cleanup/SKILL.md.j2 +9 -9
  41. issue_flow-0.4.2/src/issue_flow/templates/skills/iflow_close/SKILL.md.j2 +77 -0
  42. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_comments/SKILL.md.j2 +6 -15
  43. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_fix/SKILL.md.j2 +9 -11
  44. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_graphify/SKILL.md.j2 +7 -11
  45. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_history_update/SKILL.md.j2 +4 -11
  46. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_iflow/SKILL.md.j2 +8 -10
  47. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_init/SKILL.md.j2 +14 -23
  48. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_pause/SKILL.md.j2 +7 -7
  49. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_pick/SKILL.md.j2 +18 -12
  50. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_plan/SKILL.md.j2 +7 -8
  51. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_start/SKILL.md.j2 +8 -7
  52. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_status/SKILL.md.j2 +7 -10
  53. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_version_bump/SKILL.md.j2 +4 -9
  54. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/iflow_yolo/SKILL.md.j2 +10 -10
  55. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templating.py +55 -2
  56. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/tracking.py +59 -3
  57. issue_flow-0.4.1b2/PKG-INFO +0 -506
  58. issue_flow-0.4.1b2/README.md +0 -481
  59. issue_flow-0.4.1b2/src/issue_flow/agent.py +0 -477
  60. issue_flow-0.4.1b2/src/issue_flow/templates/rules/issueflow-rules.mdc.j2 +0 -8
  61. issue_flow-0.4.1b2/src/issue_flow/templates/skills/iflow_close/SKILL.md.j2 +0 -69
  62. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/LICENSE +0 -0
  63. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/editors.py +0 -0
  64. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/py.typed +0 -0
  65. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/__init__.py +0 -0
  66. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/commands/__init__.py +0 -0
  67. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/docs/__init__.py +0 -0
  68. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/rules/AGENTS.md.j2 +0 -0
  69. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/rules/CLAUDE.md.j2 +0 -0
  70. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/rules/__init__.py +0 -0
  71. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/skills/grill_me/SKILL.md.j2 +0 -0
  72. {issue_flow-0.4.1b2 → issue_flow-0.4.2}/src/issue_flow/templates/tools/README.md.j2 +0 -0
@@ -0,0 +1,298 @@
1
+ Metadata-Version: 2.4
2
+ Name: issue-flow
3
+ Version: 0.4.2
4
+ Summary: Agents should behave. Let them follow the issue flow.
5
+ Keywords: cursor,ai,agents,issue-tracking,workflow
6
+ Author: jepegit
7
+ Author-email: jepegit <jepe@ife.no>
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Topic :: Software Development :: Build Tools
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Requires-Dist: jinja2>=3.1.6
18
+ Requires-Dist: python-dotenv>=1.2.2
19
+ Requires-Dist: rich>=14.3.3
20
+ Requires-Dist: tomlkit>=0.15.0
21
+ Requires-Dist: typer>=0.24.1
22
+ Requires-Python: >=3.11
23
+ Project-URL: Homepage, https://github.com/jepegit/issue-flow
24
+ Project-URL: Repository, https://github.com/jepegit/issue-flow
25
+ Project-URL: Issues, https://github.com/jepegit/issue-flow/issues
26
+ Description-Content-Type: text/markdown
27
+
28
+ # issue-flow
29
+
30
+ Agents should behave. Let them follow the issue flow.
31
+
32
+ **issue-flow** scaffolds a lightweight issue-tracking workflow into your project so that AI coding agents can pick up GitHub issues, plan work, and land PRs in a consistent way. It supports **Cursor, Claude Code, opencode, and Codex** via `--editor` (see [Editor support](https://github.com/jepegit/issue-flow/blob/main/docs/editors.md)); the examples below use the default, Cursor.
33
+
34
+ **Full documentation:** <https://issue-flow.readthedocs.io/>
35
+
36
+ ## What it does
37
+
38
+ Running `issue-flow init` in your project root creates:
39
+
40
+ ```text
41
+ your-project/
42
+ .issueflows/
43
+ 00-tools/ # Helper scripts for agents
44
+ 01-current-issues/ # Active issue markdown files
45
+ 02-partly-solved-issues/ # Parked / in-progress issues
46
+ 03-solved-issues/ # Completed issues archive
47
+ 04-designs-and-guides/ # Durable project context and decisions
48
+ this-project.md # Hand-editable project brief (created if missing)
49
+ .cursor/
50
+ skills/ # Agent Skills (/iflow, /iflow-pick, /iflow-init,
51
+ # /iflow-plan, /iflow-start, /iflow-close, ...)
52
+ rules/
53
+ issueflow-rules.mdc # Always-on Cursor rule for the workflow
54
+ AGENTS.md # Workflow rules (managed block; shared by all editors)
55
+ docs/
56
+ issue-workflow.md # Human-readable overview of the workflow
57
+ ```
58
+
59
+ The exact `agent_dir` and the per-editor rules file depend on which editor(s) you scaffold for — see [Editor support](https://github.com/jepegit/issue-flow/blob/main/docs/editors.md). `AGENTS.md` (written as a non-destructive managed block), `.issueflows/04-designs-and-guides/this-project.md` (a hand-editable project brief created only when missing), and `docs/issue-workflow.md` are shared by every editor.
60
+
61
+ The Cursor Agent Skills give agents a repeatable flow and appear in the slash menu. In chat you can also type **`iflow plan`**, **`iflow pick`**, etc. (space-separated, no `/`) when your keyboard makes slash awkward — see `docs/issue-workflow.md`. The linear path is:
62
+
63
+ 1. `/iflow-init 42` or `iflow init 42` — pulls GitHub issue #42 into `.issueflows/01-current-issues/` and archives older issues.
64
+ 2. `iflow plan` or `/iflow-plan` — drafts `issue<N>_plan.md` (Goal / Constraints / Approach / Files to touch / Test strategy / Open questions) and stops for your confirmation.
65
+ 3. `/iflow-start` — reads the confirmed plan and implements it. If no plan file exists, it offers to run `/iflow-plan` first, proceed without a plan, or abort.
66
+ 4. `/iflow-close` — runs tests, optionally bumps version with `uv version --bump`, appends a `HISTORY.md` entry (or promotes `[Unreleased]` to a new release section on a bump), updates status files, commits, pushes, and opens a PR.
67
+ 5. `/iflow-cleanup` — after the PR merges, switches to the default branch, fast-forwards, prunes, and deletes the merged local branch.
68
+
69
+ Plus a few off-path commands:
70
+
71
+ - `/iflow-pick` — **front door**: when you haven't chosen an issue yet, it helps pick one (parked work in `02-partly-solved-issues/` first, else open GitHub issues ranked by milestone, labels, and similarity to recently solved work), creates the `<N>-slug` branch, and runs `/iflow-init`. Pass `fix` to create a new general-fixes issue. Off-path; never auto-dispatched.
72
+ - `/iflow` — **quick start**: inspects the current issue's state and dispatches to the right linear step automatically. A branch-derived number (`42-fix-login` → `N=42`) is authoritative, so `/iflow` works from a fresh branch too.
73
+ - `/iflow-pause` — park the current issue in `02-partly-solved-issues/` with a **Remaining work** note; optional WIP commit + switch back to the default branch.
74
+ - `/iflow-yolo` — all-in-one chain (`init → plan → start → close`) for small, low-risk issues, with up-front safeguards (refuses on the default branch, refuses with dirty unrelated changes, requires passing tests, single consolidated confirm).
75
+ - `/iflow-fix` — interactive iterative-fixes session: creates one GitHub issue + long-lived branch, then loops over many small fixes (each gets a short plan, implemented only on confirmation and recorded in `issue<N>_status.md`), ending with `/iflow-close`. Coexists with `/iflow-pick fix` (the one-shot setup). Off-path; never auto-dispatched.
76
+ - `/iflow-status` — **read-only** overview of where every issue stands: the local tracking state (focus / parked / solved) plus open GitHub issues cross-referenced against it. Pass `local` to skip the GitHub query. Changes nothing; off-path; never auto-dispatched.
77
+ - `/iflow-archive` — **condense the solved archive (destructive, gated)**: summarises selected `issue<N>_*` groups under `03-solved-issues/` into a dated `YYYY-MM-DD_archived_issues.md` file. The summary records the pre-archive git ref so every original file stays recoverable (`git show <ref>:<path>`). Deletes the source files only after one consolidated confirm. Default: archive all but the **5 most recent** solved groups; pass `keep <K>`, an explicit list of issue numbers, or `all`. Requires a **clean working tree**. Off-path; never auto-dispatched.
78
+
79
+ The **Agent Skills** under `.cursor/skills/` carry the workflows for on-demand use with `/iflow-pick`, `/iflow`, `/iflow-init`, `/iflow-plan`, `/iflow-start`, `/iflow-pause`, `/iflow-close`, `/iflow-cleanup`, `/iflow-yolo`, `/iflow-fix`, `/iflow-status`, `/iflow-archive`, `@iflow-version-bump` when you need only the bump steps, or `@iflow-history-update` when you need only the changelog update (see [Cursor Agent Skills](https://cursor.com/help/customization/skills)).
80
+
81
+ ## Prerequisites
82
+
83
+ issue-flow itself is a small Python CLI, but the **scaffolded commands and skills
84
+ it writes into your project shell out to a few external tools**. If they are
85
+ missing, the workflows will fail at runtime — so `issue-flow init` now
86
+ checks for them up front and prints install hints before it does anything.
87
+
88
+ Required:
89
+
90
+ - **[Git](https://git-scm.com/downloads)** — used by every slash command for
91
+ branch, fetch, status, commit, and push operations. Almost certainly already
92
+ installed if you're here, but the check covers it for completeness.
93
+ - **[GitHub CLI (`gh`)](https://cli.github.com/)** — used by `/iflow-init` to
94
+ fetch issues, by `/iflow-close` to open PRs, and by `/iflow-cleanup` to check
95
+ PR merge status. After installing, run `gh auth login` once to authenticate.
96
+
97
+ Recommended:
98
+
99
+ - **[uv](https://docs.astral.sh/uv/)** — how issue-flow itself is meant to be
100
+ installed, and how this repo manages its own Python environment.
101
+
102
+ Quick install pointers for `gh`:
103
+
104
+
105
+ | Platform | Command |
106
+ | --------------------- | ---------------------------------------------------------------------------------------------- |
107
+ | macOS (Homebrew) | `brew install gh` |
108
+ | Windows (winget) | `winget install --id GitHub.cli -e` |
109
+ | Linux (Debian/Ubuntu) | `sudo apt install gh` (or see [cli.github.com](https://cli.github.com/) for the official repo) |
110
+
111
+
112
+ If a dependency is missing, `issue-flow init` prints the installation hints
113
+ and asks whether to continue anyway. You can bypass the prompt in automation
114
+ with `issue-flow init --skip-dep-check` (the same flag is available on
115
+ `issue-flow update`), and the prompt is also auto-skipped when stdin is not
116
+ a TTY (e.g. CI pipelines).
117
+
118
+ ### Multi-root workspaces
119
+
120
+ When one Cursor workspace contains **several sibling repositories** (each with its
121
+ own `issue-flow init`), lifecycle commands must target the correct repo explicitly.
122
+ Use slash hints (`root:<path>`, `repo:<folder-name>`, `repo:owner/name`), or run
123
+ `issue-flow agent resolve [--from-file <active-file>] [--json]` before `git`/`gh`
124
+ calls. See `.issueflows/04-designs-and-guides/multi-repo-workspaces.md` in
125
+ scaffolded projects (or run `issue-flow update` to refresh scoped
126
+ `issueflow-rules.mdc` files).
127
+
128
+ ### Optional: graphify integration
129
+
130
+ issue-flow has a lightweight integration with [graphify](https://iflow-graphify.net)
131
+ (PyPI: `graphifyy`, CLI: `graphify`) — a tool that turns the project into a
132
+ queryable knowledge graph that AI assistants can read instead of grepping
133
+ through files. The integration is **opt-in by installing `graphifyy` as its
134
+ own tool** (the same way you installed issue-flow): there is no enable flag and
135
+ no extras to remember — detection is purely PATH-based. (You *can* keep an LLM
136
+ API key in `.env` for the optional `extract` pass; see below.)
137
+
138
+ What `issue-flow` does when `graphify` is on PATH:
139
+
140
+ - `issue-flow init` and `issue-flow update` run `graphify cursor install` so
141
+ the graphify Cursor skill is registered alongside the issue-flow scaffold.
142
+ If graphify is not installed, both commands just print install hints and
143
+ continue — they never block.
144
+ - A new `/iflow-graphify` entry point (skill on Cursor/Codex, command + skill
145
+ for command-emitting editors) wraps
146
+ `issue-flow graphify`. With no extra args it runs `graphify update <project>`
147
+ — AST-only, **no LLM API key required**, so the no-arg case "just works".
148
+ For richer semantic relationships add `extract` (`issue-flow graphify extract`)
149
+ and configure a backend (`GEMINI_API_KEY`, `ANTHROPIC_API_KEY`,
150
+ `OPENAI_API_KEY`, `MOONSHOT_API_KEY`, or `--backend ollama` for a local
151
+ LLM). You can set that key in the project `.env` — `issue-flow graphify`
152
+ loads `.env` from the project root before invoking graphify — or export it in
153
+ your shell environment. Cursor's own LLM is not available to subprocesses, so
154
+ graphify needs its own backend. Other subcommands (`watch`, `cluster-only`, …)
155
+ pass through too; trailing flags forward verbatim.
156
+ - The scaffolded rules and `/iflow-start` mention `graphify-out/GRAPH_REPORT.md`
157
+ as a recommended pre-read when the file exists. `/iflow-graphify` is **off-path** —
158
+ `/iflow` never auto-dispatches to it.
159
+
160
+ To enable, install graphify as its own standalone tool:
161
+
162
+ ```bash
163
+ uv tool install graphifyy # recommended
164
+ # or
165
+ pipx install graphifyy
166
+ # or
167
+ pip install graphifyy
168
+ ```
169
+
170
+ > **Why not an `issue-flow[graphify]` extra (or `uv tool install issue-flow --with graphifyy`)?**
171
+ > `uv tool install` only puts the **host package's** entry-point scripts on
172
+ > PATH. An extra (or `--with graphifyy`) pulls graphifyy into issue-flow's
173
+ > venv but leaves the `graphify` CLI invisible to the shell, so `/iflow-graphify`
174
+ > and `graphify cursor install` would still fail. Installing graphify as
175
+ > its own tool puts a real `graphify` shim on PATH and matches how we
176
+ > treat `git` / `gh`.
177
+
178
+ > **Just installed graphifyy and `issue-flow init` says it's still missing?**
179
+ > uv prints `~/.local/bin is not on your PATH` after the first
180
+ > `uv tool install`. Run `uv tool update-shell` (refreshes shell rc files),
181
+ > then **restart your shell and Cursor** so the new PATH takes effect.
182
+ > issue-flow's missing-CLI hint also detects this case and tells you the
183
+ > exact directory to add.
184
+
185
+ After installing, run `issue-flow update` once so the graphify Cursor skill
186
+ gets registered.
187
+
188
+ ## Installation
189
+
190
+ Requires Python 3.11+ and [uv](https://docs.astral.sh/uv/) (recommended).
191
+
192
+ ```bash
193
+ uv tool install issue-flow
194
+ ```
195
+
196
+ Or add it as a dev dependency to your project: `uv add --dev issue-flow`.
197
+
198
+ The scaffolded workflows shell out to **[Git](https://git-scm.com/downloads)** and the **[GitHub CLI (`gh`)](https://cli.github.com/)** (run `gh auth login` once after installing). `issue-flow init` checks for both up front and prints install hints before it does anything; bypass the prompt in automation with `--skip-dep-check`.
199
+
200
+ ## Quick start
201
+
202
+ ```bash
203
+ cd your-project
204
+ issue-flow init
205
+ ```
206
+
207
+ That's it. Open the project in Cursor and start with `/iflow` — or step through the linear path explicitly:
208
+
209
+ 1. `/iflow-init 42` — pulls GitHub issue #42 into `.issueflows/01-current-issues/` and archives older issues.
210
+ 2. `/iflow-plan` — drafts `issue<N>_plan.md` (Goal / Constraints / Approach / Files to touch / Test strategy / Open questions) and stops for your confirmation.
211
+ 3. `/iflow-start` — reads the confirmed plan and implements it.
212
+ 4. `/iflow-close` — runs tests, optionally bumps version, appends a `HISTORY.md` entry, updates status files, commits, pushes, and opens a PR.
213
+ 5. `/iflow-cleanup` — after the PR merges, switches to the default branch, fast-forwards, prunes, and deletes the merged local branch.
214
+
215
+ Plus a few off-path commands (never auto-dispatched):
216
+
217
+ - `/iflow-pick` — **front door**: helps pick the next issue (parked work first, else open GitHub issues ranked by milestone, labels, and similarity to recent work), creates the branch, and runs `/iflow-init`.
218
+ - `/iflow` — **quick start**: inspects the current issue's state and dispatches to the right linear step automatically (a branch-derived number like `42-fix-login` is authoritative).
219
+ - `/iflow-pause` — park the current issue with a **Remaining work** note.
220
+ - `/iflow-yolo` — all-in-one chain (`init → plan → start → close`) for small, low-risk issues, with up-front safeguards and a single consolidated confirm.
221
+ - `/iflow-fix` — interactive iterative-fixes session: one GitHub issue + long-lived branch, many small confirmed fixes.
222
+ - `/iflow-status` — **read-only** overview of where every issue stands, locally and on GitHub.
223
+ - `/iflow-archive` — condense old solved-issue files into a dated summary (destructive, gated behind one consolidated confirm; originals stay recoverable via git).
224
+
225
+ ## CLI overview
226
+
227
+ ```
228
+ issue-flow init [PROJECT_DIR] [--force] [--skip-dep-check] [--editor EDITOR] [--mode MODE] [--skill-level LEVEL]
229
+ issue-flow update [PROJECT_DIR] [--skip-dep-check] [--editor EDITOR]
230
+ issue-flow graphify [-C PROJECT_DIR] [...graphify subcommand + args]
231
+ issue-flow status [PROJECT_DIR] [--local] [--json]
232
+ issue-flow agent state|preflight|switchback|resolve|sweep|archive|capture [...]
233
+ issue-flow config add [-C PROJECT_DIR] [--force] [--json]
234
+ ```
235
+
236
+ - `init` scaffolds; running it again without `--force` only adds missing files.
237
+ - `update` refreshes generated files after upgrading the package (overwrites scaffolds, never your issue markdown).
238
+ - `status` / `agent ...` give agents (and you) **deterministic** answers about lifecycle state — focus issue, stage, branch hygiene — instead of having the agent re-derive it by hand.
239
+
240
+ Full option tables and the `agent` subcommand reference live in the [CLI reference](https://github.com/jepegit/issue-flow/blob/main/docs/cli.md).
241
+
242
+ ## Going further
243
+
244
+ - **[Configuration](https://github.com/jepegit/issue-flow/blob/main/docs/configuration.md)** — `.env` variables and `.issueflows/config.toml`; **modes** (`standard` vs the markdown-only `simple`), **skill levels** (`basic` / `standard` / `advanced` quality-tooling guidance), the optional **caveman** and **grill-me** skills, and **label-driven flows** (a `yolo` label routes an issue through the hands-off chain).
245
+ - **[Editor support](https://github.com/jepegit/issue-flow/blob/main/docs/editors.md)** — what gets scaffolded per editor (Cursor, Claude Code, opencode, Codex), and how multi-root workspaces resolve the right repo.
246
+ - **[Graphify integration](https://github.com/jepegit/issue-flow/blob/main/docs/graphify.md)** — optional knowledge graph of your codebase that agents can read instead of grepping; enabled simply by installing `graphifyy`.
247
+ - **[Issue workflow](https://github.com/jepegit/issue-flow/blob/main/docs/issue-workflow.md)** — the human-readable walkthrough of the full lifecycle (also scaffolded into your project).
248
+
249
+ ## Development
250
+
251
+ ```bash
252
+ git clone https://github.com/jepegit/issue-flow.git
253
+ cd issue-flow
254
+ uv sync
255
+
256
+ # Run tests
257
+ uv run pytest
258
+
259
+ # Lint
260
+ uv run ruff check src/ tests/
261
+ ```
262
+
263
+ See [docs/developing.md](https://github.com/jepegit/issue-flow/blob/main/docs/developing.md) for more.
264
+
265
+ ## Changelog
266
+
267
+ See [HISTORY.md](https://github.com/jepegit/issue-flow/blob/main/HISTORY.md) for release notes.
268
+
269
+ ## Future plans
270
+
271
+ - **More editors** — extend `--editor` coverage to further AI coding tools (e.g. Windsurf) on top of the current Cursor / Claude Code / opencode / Codex support.
272
+ - **Custom templates** — let users supply their own Jinja2 templates to tailor slash commands and rules to their team's conventions.
273
+ - **Git hook integration** — optionally move issue files on commit based on status markers.
274
+ - **GitHub Actions workflow** — ship a reusable action that syncs issue state between `.issueflows/` and GitHub issue labels/milestones.
275
+
276
+ ## Acknowledgements
277
+
278
+ issue-flow builds on and takes inspiration from other people's open-source work.
279
+ Thanks to the authors and communities behind these projects:
280
+
281
+ | Project | How issue-flow uses it | License |
282
+ | --- | --- | --- |
283
+ | [JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman) | Inspiration for the bundled `caveman` Agent Skill (terse, token-greedy response style). Our version is a trimmed adaptation — full intensity only, English only. | [MIT](https://github.com/JuliusBrussee/caveman/blob/main/LICENSE) |
284
+ | [mattpocock/skills](https://github.com/mattpocock/skills) | Matt Pocock's `grill-me` skill inspired the bundled `grill-me` Agent Skill (relentless planning interview). Our version is adapted to issue-flow's planning workflow, feeding conclusions into `issue<N>_plan.md`. | [MIT](https://github.com/mattpocock/skills/blob/main/LICENSE) |
285
+ | [safishamsi/graphify](https://github.com/safishamsi/graphify) (`graphifyy` on PyPI) | Powers the optional knowledge-graph integration (`issue-flow graphify`, `graphify-out/`). Installed separately and invoked as an external tool. | [MIT](https://github.com/safishamsi/graphify/blob/main/LICENSE) |
286
+ | [Typer](https://github.com/fastapi/typer) | The `issue-flow` command-line interface. | MIT |
287
+ | [Rich](https://github.com/Textualize/rich) | Formatted terminal output during `init` / `update`. | MIT |
288
+ | [Jinja2](https://github.com/pallets/jinja) | Renders the scaffolded skill, command, and rules templates. | BSD-3-Clause |
289
+ | [tomlkit](https://github.com/python-poetry/tomlkit) | Comment-preserving round-trips of `.issueflows/config.toml`. | MIT |
290
+ | [python-dotenv](https://github.com/theskumar/python-dotenv) | Loads `ISSUEFLOW_*` settings from a project `.env`. | BSD-3-Clause |
291
+ | [Zensical](https://github.com/zensical/zensical) | Builds the [documentation site](https://issue-flow.readthedocs.io/) (from the Material for MkDocs team). | MIT |
292
+
293
+ Using or drawing on another project that should be listed here? Open a PR or issue
294
+ to add a row.
295
+
296
+ ## License
297
+
298
+ This project is released under the MIT License. See the full text in the repository: [LICENSE](https://github.com/jepegit/issue-flow/blob/main/LICENSE).
@@ -0,0 +1,271 @@
1
+ # issue-flow
2
+
3
+ Agents should behave. Let them follow the issue flow.
4
+
5
+ **issue-flow** scaffolds a lightweight issue-tracking workflow into your project so that AI coding agents can pick up GitHub issues, plan work, and land PRs in a consistent way. It supports **Cursor, Claude Code, opencode, and Codex** via `--editor` (see [Editor support](https://github.com/jepegit/issue-flow/blob/main/docs/editors.md)); the examples below use the default, Cursor.
6
+
7
+ **Full documentation:** <https://issue-flow.readthedocs.io/>
8
+
9
+ ## What it does
10
+
11
+ Running `issue-flow init` in your project root creates:
12
+
13
+ ```text
14
+ your-project/
15
+ .issueflows/
16
+ 00-tools/ # Helper scripts for agents
17
+ 01-current-issues/ # Active issue markdown files
18
+ 02-partly-solved-issues/ # Parked / in-progress issues
19
+ 03-solved-issues/ # Completed issues archive
20
+ 04-designs-and-guides/ # Durable project context and decisions
21
+ this-project.md # Hand-editable project brief (created if missing)
22
+ .cursor/
23
+ skills/ # Agent Skills (/iflow, /iflow-pick, /iflow-init,
24
+ # /iflow-plan, /iflow-start, /iflow-close, ...)
25
+ rules/
26
+ issueflow-rules.mdc # Always-on Cursor rule for the workflow
27
+ AGENTS.md # Workflow rules (managed block; shared by all editors)
28
+ docs/
29
+ issue-workflow.md # Human-readable overview of the workflow
30
+ ```
31
+
32
+ The exact `agent_dir` and the per-editor rules file depend on which editor(s) you scaffold for — see [Editor support](https://github.com/jepegit/issue-flow/blob/main/docs/editors.md). `AGENTS.md` (written as a non-destructive managed block), `.issueflows/04-designs-and-guides/this-project.md` (a hand-editable project brief created only when missing), and `docs/issue-workflow.md` are shared by every editor.
33
+
34
+ The Cursor Agent Skills give agents a repeatable flow and appear in the slash menu. In chat you can also type **`iflow plan`**, **`iflow pick`**, etc. (space-separated, no `/`) when your keyboard makes slash awkward — see `docs/issue-workflow.md`. The linear path is:
35
+
36
+ 1. `/iflow-init 42` or `iflow init 42` — pulls GitHub issue #42 into `.issueflows/01-current-issues/` and archives older issues.
37
+ 2. `iflow plan` or `/iflow-plan` — drafts `issue<N>_plan.md` (Goal / Constraints / Approach / Files to touch / Test strategy / Open questions) and stops for your confirmation.
38
+ 3. `/iflow-start` — reads the confirmed plan and implements it. If no plan file exists, it offers to run `/iflow-plan` first, proceed without a plan, or abort.
39
+ 4. `/iflow-close` — runs tests, optionally bumps version with `uv version --bump`, appends a `HISTORY.md` entry (or promotes `[Unreleased]` to a new release section on a bump), updates status files, commits, pushes, and opens a PR.
40
+ 5. `/iflow-cleanup` — after the PR merges, switches to the default branch, fast-forwards, prunes, and deletes the merged local branch.
41
+
42
+ Plus a few off-path commands:
43
+
44
+ - `/iflow-pick` — **front door**: when you haven't chosen an issue yet, it helps pick one (parked work in `02-partly-solved-issues/` first, else open GitHub issues ranked by milestone, labels, and similarity to recently solved work), creates the `<N>-slug` branch, and runs `/iflow-init`. Pass `fix` to create a new general-fixes issue. Off-path; never auto-dispatched.
45
+ - `/iflow` — **quick start**: inspects the current issue's state and dispatches to the right linear step automatically. A branch-derived number (`42-fix-login` → `N=42`) is authoritative, so `/iflow` works from a fresh branch too.
46
+ - `/iflow-pause` — park the current issue in `02-partly-solved-issues/` with a **Remaining work** note; optional WIP commit + switch back to the default branch.
47
+ - `/iflow-yolo` — all-in-one chain (`init → plan → start → close`) for small, low-risk issues, with up-front safeguards (refuses on the default branch, refuses with dirty unrelated changes, requires passing tests, single consolidated confirm).
48
+ - `/iflow-fix` — interactive iterative-fixes session: creates one GitHub issue + long-lived branch, then loops over many small fixes (each gets a short plan, implemented only on confirmation and recorded in `issue<N>_status.md`), ending with `/iflow-close`. Coexists with `/iflow-pick fix` (the one-shot setup). Off-path; never auto-dispatched.
49
+ - `/iflow-status` — **read-only** overview of where every issue stands: the local tracking state (focus / parked / solved) plus open GitHub issues cross-referenced against it. Pass `local` to skip the GitHub query. Changes nothing; off-path; never auto-dispatched.
50
+ - `/iflow-archive` — **condense the solved archive (destructive, gated)**: summarises selected `issue<N>_*` groups under `03-solved-issues/` into a dated `YYYY-MM-DD_archived_issues.md` file. The summary records the pre-archive git ref so every original file stays recoverable (`git show <ref>:<path>`). Deletes the source files only after one consolidated confirm. Default: archive all but the **5 most recent** solved groups; pass `keep <K>`, an explicit list of issue numbers, or `all`. Requires a **clean working tree**. Off-path; never auto-dispatched.
51
+
52
+ The **Agent Skills** under `.cursor/skills/` carry the workflows for on-demand use with `/iflow-pick`, `/iflow`, `/iflow-init`, `/iflow-plan`, `/iflow-start`, `/iflow-pause`, `/iflow-close`, `/iflow-cleanup`, `/iflow-yolo`, `/iflow-fix`, `/iflow-status`, `/iflow-archive`, `@iflow-version-bump` when you need only the bump steps, or `@iflow-history-update` when you need only the changelog update (see [Cursor Agent Skills](https://cursor.com/help/customization/skills)).
53
+
54
+ ## Prerequisites
55
+
56
+ issue-flow itself is a small Python CLI, but the **scaffolded commands and skills
57
+ it writes into your project shell out to a few external tools**. If they are
58
+ missing, the workflows will fail at runtime — so `issue-flow init` now
59
+ checks for them up front and prints install hints before it does anything.
60
+
61
+ Required:
62
+
63
+ - **[Git](https://git-scm.com/downloads)** — used by every slash command for
64
+ branch, fetch, status, commit, and push operations. Almost certainly already
65
+ installed if you're here, but the check covers it for completeness.
66
+ - **[GitHub CLI (`gh`)](https://cli.github.com/)** — used by `/iflow-init` to
67
+ fetch issues, by `/iflow-close` to open PRs, and by `/iflow-cleanup` to check
68
+ PR merge status. After installing, run `gh auth login` once to authenticate.
69
+
70
+ Recommended:
71
+
72
+ - **[uv](https://docs.astral.sh/uv/)** — how issue-flow itself is meant to be
73
+ installed, and how this repo manages its own Python environment.
74
+
75
+ Quick install pointers for `gh`:
76
+
77
+
78
+ | Platform | Command |
79
+ | --------------------- | ---------------------------------------------------------------------------------------------- |
80
+ | macOS (Homebrew) | `brew install gh` |
81
+ | Windows (winget) | `winget install --id GitHub.cli -e` |
82
+ | Linux (Debian/Ubuntu) | `sudo apt install gh` (or see [cli.github.com](https://cli.github.com/) for the official repo) |
83
+
84
+
85
+ If a dependency is missing, `issue-flow init` prints the installation hints
86
+ and asks whether to continue anyway. You can bypass the prompt in automation
87
+ with `issue-flow init --skip-dep-check` (the same flag is available on
88
+ `issue-flow update`), and the prompt is also auto-skipped when stdin is not
89
+ a TTY (e.g. CI pipelines).
90
+
91
+ ### Multi-root workspaces
92
+
93
+ When one Cursor workspace contains **several sibling repositories** (each with its
94
+ own `issue-flow init`), lifecycle commands must target the correct repo explicitly.
95
+ Use slash hints (`root:<path>`, `repo:<folder-name>`, `repo:owner/name`), or run
96
+ `issue-flow agent resolve [--from-file <active-file>] [--json]` before `git`/`gh`
97
+ calls. See `.issueflows/04-designs-and-guides/multi-repo-workspaces.md` in
98
+ scaffolded projects (or run `issue-flow update` to refresh scoped
99
+ `issueflow-rules.mdc` files).
100
+
101
+ ### Optional: graphify integration
102
+
103
+ issue-flow has a lightweight integration with [graphify](https://iflow-graphify.net)
104
+ (PyPI: `graphifyy`, CLI: `graphify`) — a tool that turns the project into a
105
+ queryable knowledge graph that AI assistants can read instead of grepping
106
+ through files. The integration is **opt-in by installing `graphifyy` as its
107
+ own tool** (the same way you installed issue-flow): there is no enable flag and
108
+ no extras to remember — detection is purely PATH-based. (You *can* keep an LLM
109
+ API key in `.env` for the optional `extract` pass; see below.)
110
+
111
+ What `issue-flow` does when `graphify` is on PATH:
112
+
113
+ - `issue-flow init` and `issue-flow update` run `graphify cursor install` so
114
+ the graphify Cursor skill is registered alongside the issue-flow scaffold.
115
+ If graphify is not installed, both commands just print install hints and
116
+ continue — they never block.
117
+ - A new `/iflow-graphify` entry point (skill on Cursor/Codex, command + skill
118
+ for command-emitting editors) wraps
119
+ `issue-flow graphify`. With no extra args it runs `graphify update <project>`
120
+ — AST-only, **no LLM API key required**, so the no-arg case "just works".
121
+ For richer semantic relationships add `extract` (`issue-flow graphify extract`)
122
+ and configure a backend (`GEMINI_API_KEY`, `ANTHROPIC_API_KEY`,
123
+ `OPENAI_API_KEY`, `MOONSHOT_API_KEY`, or `--backend ollama` for a local
124
+ LLM). You can set that key in the project `.env` — `issue-flow graphify`
125
+ loads `.env` from the project root before invoking graphify — or export it in
126
+ your shell environment. Cursor's own LLM is not available to subprocesses, so
127
+ graphify needs its own backend. Other subcommands (`watch`, `cluster-only`, …)
128
+ pass through too; trailing flags forward verbatim.
129
+ - The scaffolded rules and `/iflow-start` mention `graphify-out/GRAPH_REPORT.md`
130
+ as a recommended pre-read when the file exists. `/iflow-graphify` is **off-path** —
131
+ `/iflow` never auto-dispatches to it.
132
+
133
+ To enable, install graphify as its own standalone tool:
134
+
135
+ ```bash
136
+ uv tool install graphifyy # recommended
137
+ # or
138
+ pipx install graphifyy
139
+ # or
140
+ pip install graphifyy
141
+ ```
142
+
143
+ > **Why not an `issue-flow[graphify]` extra (or `uv tool install issue-flow --with graphifyy`)?**
144
+ > `uv tool install` only puts the **host package's** entry-point scripts on
145
+ > PATH. An extra (or `--with graphifyy`) pulls graphifyy into issue-flow's
146
+ > venv but leaves the `graphify` CLI invisible to the shell, so `/iflow-graphify`
147
+ > and `graphify cursor install` would still fail. Installing graphify as
148
+ > its own tool puts a real `graphify` shim on PATH and matches how we
149
+ > treat `git` / `gh`.
150
+
151
+ > **Just installed graphifyy and `issue-flow init` says it's still missing?**
152
+ > uv prints `~/.local/bin is not on your PATH` after the first
153
+ > `uv tool install`. Run `uv tool update-shell` (refreshes shell rc files),
154
+ > then **restart your shell and Cursor** so the new PATH takes effect.
155
+ > issue-flow's missing-CLI hint also detects this case and tells you the
156
+ > exact directory to add.
157
+
158
+ After installing, run `issue-flow update` once so the graphify Cursor skill
159
+ gets registered.
160
+
161
+ ## Installation
162
+
163
+ Requires Python 3.11+ and [uv](https://docs.astral.sh/uv/) (recommended).
164
+
165
+ ```bash
166
+ uv tool install issue-flow
167
+ ```
168
+
169
+ Or add it as a dev dependency to your project: `uv add --dev issue-flow`.
170
+
171
+ The scaffolded workflows shell out to **[Git](https://git-scm.com/downloads)** and the **[GitHub CLI (`gh`)](https://cli.github.com/)** (run `gh auth login` once after installing). `issue-flow init` checks for both up front and prints install hints before it does anything; bypass the prompt in automation with `--skip-dep-check`.
172
+
173
+ ## Quick start
174
+
175
+ ```bash
176
+ cd your-project
177
+ issue-flow init
178
+ ```
179
+
180
+ That's it. Open the project in Cursor and start with `/iflow` — or step through the linear path explicitly:
181
+
182
+ 1. `/iflow-init 42` — pulls GitHub issue #42 into `.issueflows/01-current-issues/` and archives older issues.
183
+ 2. `/iflow-plan` — drafts `issue<N>_plan.md` (Goal / Constraints / Approach / Files to touch / Test strategy / Open questions) and stops for your confirmation.
184
+ 3. `/iflow-start` — reads the confirmed plan and implements it.
185
+ 4. `/iflow-close` — runs tests, optionally bumps version, appends a `HISTORY.md` entry, updates status files, commits, pushes, and opens a PR.
186
+ 5. `/iflow-cleanup` — after the PR merges, switches to the default branch, fast-forwards, prunes, and deletes the merged local branch.
187
+
188
+ Plus a few off-path commands (never auto-dispatched):
189
+
190
+ - `/iflow-pick` — **front door**: helps pick the next issue (parked work first, else open GitHub issues ranked by milestone, labels, and similarity to recent work), creates the branch, and runs `/iflow-init`.
191
+ - `/iflow` — **quick start**: inspects the current issue's state and dispatches to the right linear step automatically (a branch-derived number like `42-fix-login` is authoritative).
192
+ - `/iflow-pause` — park the current issue with a **Remaining work** note.
193
+ - `/iflow-yolo` — all-in-one chain (`init → plan → start → close`) for small, low-risk issues, with up-front safeguards and a single consolidated confirm.
194
+ - `/iflow-fix` — interactive iterative-fixes session: one GitHub issue + long-lived branch, many small confirmed fixes.
195
+ - `/iflow-status` — **read-only** overview of where every issue stands, locally and on GitHub.
196
+ - `/iflow-archive` — condense old solved-issue files into a dated summary (destructive, gated behind one consolidated confirm; originals stay recoverable via git).
197
+
198
+ ## CLI overview
199
+
200
+ ```
201
+ issue-flow init [PROJECT_DIR] [--force] [--skip-dep-check] [--editor EDITOR] [--mode MODE] [--skill-level LEVEL]
202
+ issue-flow update [PROJECT_DIR] [--skip-dep-check] [--editor EDITOR]
203
+ issue-flow graphify [-C PROJECT_DIR] [...graphify subcommand + args]
204
+ issue-flow status [PROJECT_DIR] [--local] [--json]
205
+ issue-flow agent state|preflight|switchback|resolve|sweep|archive|capture [...]
206
+ issue-flow config add [-C PROJECT_DIR] [--force] [--json]
207
+ ```
208
+
209
+ - `init` scaffolds; running it again without `--force` only adds missing files.
210
+ - `update` refreshes generated files after upgrading the package (overwrites scaffolds, never your issue markdown).
211
+ - `status` / `agent ...` give agents (and you) **deterministic** answers about lifecycle state — focus issue, stage, branch hygiene — instead of having the agent re-derive it by hand.
212
+
213
+ Full option tables and the `agent` subcommand reference live in the [CLI reference](https://github.com/jepegit/issue-flow/blob/main/docs/cli.md).
214
+
215
+ ## Going further
216
+
217
+ - **[Configuration](https://github.com/jepegit/issue-flow/blob/main/docs/configuration.md)** — `.env` variables and `.issueflows/config.toml`; **modes** (`standard` vs the markdown-only `simple`), **skill levels** (`basic` / `standard` / `advanced` quality-tooling guidance), the optional **caveman** and **grill-me** skills, and **label-driven flows** (a `yolo` label routes an issue through the hands-off chain).
218
+ - **[Editor support](https://github.com/jepegit/issue-flow/blob/main/docs/editors.md)** — what gets scaffolded per editor (Cursor, Claude Code, opencode, Codex), and how multi-root workspaces resolve the right repo.
219
+ - **[Graphify integration](https://github.com/jepegit/issue-flow/blob/main/docs/graphify.md)** — optional knowledge graph of your codebase that agents can read instead of grepping; enabled simply by installing `graphifyy`.
220
+ - **[Issue workflow](https://github.com/jepegit/issue-flow/blob/main/docs/issue-workflow.md)** — the human-readable walkthrough of the full lifecycle (also scaffolded into your project).
221
+
222
+ ## Development
223
+
224
+ ```bash
225
+ git clone https://github.com/jepegit/issue-flow.git
226
+ cd issue-flow
227
+ uv sync
228
+
229
+ # Run tests
230
+ uv run pytest
231
+
232
+ # Lint
233
+ uv run ruff check src/ tests/
234
+ ```
235
+
236
+ See [docs/developing.md](https://github.com/jepegit/issue-flow/blob/main/docs/developing.md) for more.
237
+
238
+ ## Changelog
239
+
240
+ See [HISTORY.md](https://github.com/jepegit/issue-flow/blob/main/HISTORY.md) for release notes.
241
+
242
+ ## Future plans
243
+
244
+ - **More editors** — extend `--editor` coverage to further AI coding tools (e.g. Windsurf) on top of the current Cursor / Claude Code / opencode / Codex support.
245
+ - **Custom templates** — let users supply their own Jinja2 templates to tailor slash commands and rules to their team's conventions.
246
+ - **Git hook integration** — optionally move issue files on commit based on status markers.
247
+ - **GitHub Actions workflow** — ship a reusable action that syncs issue state between `.issueflows/` and GitHub issue labels/milestones.
248
+
249
+ ## Acknowledgements
250
+
251
+ issue-flow builds on and takes inspiration from other people's open-source work.
252
+ Thanks to the authors and communities behind these projects:
253
+
254
+ | Project | How issue-flow uses it | License |
255
+ | --- | --- | --- |
256
+ | [JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman) | Inspiration for the bundled `caveman` Agent Skill (terse, token-greedy response style). Our version is a trimmed adaptation — full intensity only, English only. | [MIT](https://github.com/JuliusBrussee/caveman/blob/main/LICENSE) |
257
+ | [mattpocock/skills](https://github.com/mattpocock/skills) | Matt Pocock's `grill-me` skill inspired the bundled `grill-me` Agent Skill (relentless planning interview). Our version is adapted to issue-flow's planning workflow, feeding conclusions into `issue<N>_plan.md`. | [MIT](https://github.com/mattpocock/skills/blob/main/LICENSE) |
258
+ | [safishamsi/graphify](https://github.com/safishamsi/graphify) (`graphifyy` on PyPI) | Powers the optional knowledge-graph integration (`issue-flow graphify`, `graphify-out/`). Installed separately and invoked as an external tool. | [MIT](https://github.com/safishamsi/graphify/blob/main/LICENSE) |
259
+ | [Typer](https://github.com/fastapi/typer) | The `issue-flow` command-line interface. | MIT |
260
+ | [Rich](https://github.com/Textualize/rich) | Formatted terminal output during `init` / `update`. | MIT |
261
+ | [Jinja2](https://github.com/pallets/jinja) | Renders the scaffolded skill, command, and rules templates. | BSD-3-Clause |
262
+ | [tomlkit](https://github.com/python-poetry/tomlkit) | Comment-preserving round-trips of `.issueflows/config.toml`. | MIT |
263
+ | [python-dotenv](https://github.com/theskumar/python-dotenv) | Loads `ISSUEFLOW_*` settings from a project `.env`. | BSD-3-Clause |
264
+ | [Zensical](https://github.com/zensical/zensical) | Builds the [documentation site](https://issue-flow.readthedocs.io/) (from the Material for MkDocs team). | MIT |
265
+
266
+ Using or drawing on another project that should be listed here? Open a PR or issue
267
+ to add a row.
268
+
269
+ ## License
270
+
271
+ This project is released under the MIT License. See the full text in the repository: [LICENSE](https://github.com/jepegit/issue-flow/blob/main/LICENSE).
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "issue-flow"
3
- version = "0.4.1b2"
3
+ version = "0.4.2"
4
4
  description = "Agents should behave. Let them follow the issue flow."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -8,13 +8,15 @@ license-files = ["LICENSE"]
8
8
  authors = [
9
9
  { name = "jepegit", email = "jepe@ife.no" }
10
10
  ]
11
- requires-python = ">=3.13"
11
+ requires-python = ">=3.11"
12
12
  keywords = ["cursor", "ai", "agents", "issue-tracking", "workflow"]
13
13
  classifiers = [
14
14
  "License :: OSI Approved :: MIT License",
15
15
  "Development Status :: 3 - Alpha",
16
16
  "Intended Audience :: Developers",
17
17
  "Topic :: Software Development :: Build Tools",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
18
20
  "Programming Language :: Python :: 3.13",
19
21
  ]
20
22
  dependencies = [
@@ -42,3 +44,6 @@ dev = [
42
44
  "pytest>=9.0.2",
43
45
  "ruff>=0.15.9",
44
46
  ]
47
+ docs = [
48
+ "zensical>=0.0.50",
49
+ ]
@@ -1,3 +1,3 @@
1
1
  """issue-flow: Agents should behave. Let them follow the issue flow."""
2
2
 
3
- __version__ = "0.4.1a3"
3
+ __version__ = "0.4.2a4"