cellpy-figure 0.1.0__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 (80) hide show
  1. cellpy_figure-0.1.0/.cursor/rules/graphify.mdc +10 -0
  2. cellpy_figure-0.1.0/.cursor/rules/issueflow-rules.mdc +349 -0
  3. cellpy_figure-0.1.0/.cursor/skills/caveman/SKILL.md +63 -0
  4. cellpy_figure-0.1.0/.cursor/skills/gh-ci/SKILL.md +74 -0
  5. cellpy_figure-0.1.0/.cursor/skills/grill-me/SKILL.md +57 -0
  6. cellpy_figure-0.1.0/.cursor/skills/iflow/SKILL.md +111 -0
  7. cellpy_figure-0.1.0/.cursor/skills/iflow-archive/SKILL.md +92 -0
  8. cellpy_figure-0.1.0/.cursor/skills/iflow-auto/SKILL.md +181 -0
  9. cellpy_figure-0.1.0/.cursor/skills/iflow-build/SKILL.md +111 -0
  10. cellpy_figure-0.1.0/.cursor/skills/iflow-capture/SKILL.md +110 -0
  11. cellpy_figure-0.1.0/.cursor/skills/iflow-cleanup/SKILL.md +144 -0
  12. cellpy_figure-0.1.0/.cursor/skills/iflow-close/SKILL.md +191 -0
  13. cellpy_figure-0.1.0/.cursor/skills/iflow-comments/SKILL.md +101 -0
  14. cellpy_figure-0.1.0/.cursor/skills/iflow-cycle/SKILL.md +157 -0
  15. cellpy_figure-0.1.0/.cursor/skills/iflow-doctor/SKILL.md +119 -0
  16. cellpy_figure-0.1.0/.cursor/skills/iflow-drive/SKILL.md +187 -0
  17. cellpy_figure-0.1.0/.cursor/skills/iflow-epic/SKILL.md +178 -0
  18. cellpy_figure-0.1.0/.cursor/skills/iflow-fix/SKILL.md +111 -0
  19. cellpy_figure-0.1.0/.cursor/skills/iflow-graphify/SKILL.md +79 -0
  20. cellpy_figure-0.1.0/.cursor/skills/iflow-history-update/SKILL.md +113 -0
  21. cellpy_figure-0.1.0/.cursor/skills/iflow-init/SKILL.md +145 -0
  22. cellpy_figure-0.1.0/.cursor/skills/iflow-issue/SKILL.md +111 -0
  23. cellpy_figure-0.1.0/.cursor/skills/iflow-ops/SKILL.md +77 -0
  24. cellpy_figure-0.1.0/.cursor/skills/iflow-pause/SKILL.md +80 -0
  25. cellpy_figure-0.1.0/.cursor/skills/iflow-pick/SKILL.md +137 -0
  26. cellpy_figure-0.1.0/.cursor/skills/iflow-plan/SKILL.md +113 -0
  27. cellpy_figure-0.1.0/.cursor/skills/iflow-pr-sync/SKILL.md +106 -0
  28. cellpy_figure-0.1.0/.cursor/skills/iflow-review/SKILL.md +138 -0
  29. cellpy_figure-0.1.0/.cursor/skills/iflow-setup/SKILL.md +117 -0
  30. cellpy_figure-0.1.0/.cursor/skills/iflow-split/SKILL.md +114 -0
  31. cellpy_figure-0.1.0/.cursor/skills/iflow-status/SKILL.md +98 -0
  32. cellpy_figure-0.1.0/.cursor/skills/iflow-version-bump/SKILL.md +116 -0
  33. cellpy_figure-0.1.0/.cursor/skills/iflow-yolo/SKILL.md +85 -0
  34. cellpy_figure-0.1.0/.gitignore +220 -0
  35. cellpy_figure-0.1.0/.issueflows/00-tools/.gitkeep +0 -0
  36. cellpy_figure-0.1.0/.issueflows/00-tools/README.md +29 -0
  37. cellpy_figure-0.1.0/.issueflows/01-current-issues/.gitkeep +0 -0
  38. cellpy_figure-0.1.0/.issueflows/02-partly-solved-issues/.gitkeep +0 -0
  39. cellpy_figure-0.1.0/.issueflows/02-partly-solved-issues/issue6_original.md +38 -0
  40. cellpy_figure-0.1.0/.issueflows/02-partly-solved-issues/issue6_plan.md +66 -0
  41. cellpy_figure-0.1.0/.issueflows/02-partly-solved-issues/issue6_status.md +18 -0
  42. cellpy_figure-0.1.0/.issueflows/03-solved-issues/.gitkeep +0 -0
  43. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue1_original.md +35 -0
  44. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue1_status.md +5 -0
  45. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue2_original.md +31 -0
  46. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue2_status.md +5 -0
  47. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue3_original.md +31 -0
  48. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue3_plan.md +58 -0
  49. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue3_status.md +5 -0
  50. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue4_original.md +28 -0
  51. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue4_plan.md +53 -0
  52. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue4_status.md +15 -0
  53. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue5_original.md +28 -0
  54. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue5_plan.md +58 -0
  55. cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue5_status.md +5 -0
  56. cellpy_figure-0.1.0/.issueflows/04-designs-and-guides/.gitkeep +0 -0
  57. cellpy_figure-0.1.0/.issueflows/04-designs-and-guides/essential-tests.md +70 -0
  58. cellpy_figure-0.1.0/.issueflows/04-designs-and-guides/test-registry.md +21 -0
  59. cellpy_figure-0.1.0/.issueflows/04-designs-and-guides/this-project.md +48 -0
  60. cellpy_figure-0.1.0/.issueflows/05-epics/.gitkeep +0 -0
  61. cellpy_figure-0.1.0/.issueflows/agent/skill-stamps.json +36 -0
  62. cellpy_figure-0.1.0/.python-version +1 -0
  63. cellpy_figure-0.1.0/AGENTS.md +343 -0
  64. cellpy_figure-0.1.0/HISTORY.md +9 -0
  65. cellpy_figure-0.1.0/LICENSE +21 -0
  66. cellpy_figure-0.1.0/PKG-INFO +48 -0
  67. cellpy_figure-0.1.0/PLAN.md +681 -0
  68. cellpy_figure-0.1.0/README.md +24 -0
  69. cellpy_figure-0.1.0/pyproject.toml +71 -0
  70. cellpy_figure-0.1.0/src/cellpy_figure/__init__.py +16 -0
  71. cellpy_figure-0.1.0/src/cellpy_figure/facets.py +49 -0
  72. cellpy_figure-0.1.0/src/cellpy_figure/io.py +448 -0
  73. cellpy_figure-0.1.0/src/cellpy_figure/model.py +140 -0
  74. cellpy_figure-0.1.0/src/cellpy_figure/mpl.py +324 -0
  75. cellpy_figure-0.1.0/src/cellpy_figure/plotly.py +404 -0
  76. cellpy_figure-0.1.0/src/cellpy_figure/presets.py +97 -0
  77. cellpy_figure-0.1.0/src/cellpy_figure/py.typed +0 -0
  78. cellpy_figure-0.1.0/src/cellpy_figure/schema/__init__.py +22 -0
  79. cellpy_figure-0.1.0/src/cellpy_figure/schema/figure-1.json +72 -0
  80. cellpy_figure-0.1.0/uv.lock +806 -0
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: graphify knowledge graph context
3
+ alwaysApply: true
4
+ ---
5
+
6
+ This project has a graphify knowledge graph at graphify-out/.
7
+
8
+ - Before answering architecture or codebase questions, read graphify-out/GRAPH_REPORT.md for god nodes and community structure
9
+ - If graphify-out/wiki/index.md exists, navigate it instead of reading raw files
10
+ - After modifying code files in this session, run `graphify update .` to keep the graph current (AST-only, no API cost)
@@ -0,0 +1,349 @@
1
+ ---
2
+ description: Issue-flow workflow rules for cellpy-figure
3
+ globs:
4
+ - "**/*"
5
+ alwaysApply: false
6
+ ---
7
+
8
+
9
+ # Issue-flow best practices
10
+
11
+
12
+ ## Running python
13
+
14
+ **Respect the project's existing toolchain first.** If this project already
15
+ documents how to run Python and manage dependencies — in its `README`,
16
+ `AGENTS.md`, `CLAUDE.md`, `.cursor/rules`, `environment.yml`, `pyproject.toml`,
17
+ `Makefile`, CI config, etc. — **follow that**, even where it conflicts with the
18
+ defaults below. These rules describe issue-flow's *default* assumptions, not a
19
+ mandate to override a project that has already chosen differently.
20
+
21
+ The one tool-neutral principle: **don't call bare `python ...`** — invoke Python
22
+ through the project's environment (its runner, or an activated virtualenv/conda
23
+ env) so scripts and tests see the right interpreter and dependencies.
24
+
25
+ ### If the project uses conda
26
+
27
+ When the project documents a conda environment, run **all** Python commands —
28
+ scripts **and `pytest`** — inside the **activated conda environment**. Do **not**
29
+ substitute `uv run`.
30
+
31
+ ```bash
32
+ # Either activate the environment first…
33
+ conda activate <env-name>
34
+ python run_script.py
35
+ pytest
36
+
37
+ # …or run one-off commands inside it:
38
+ conda run -n <env-name> pytest
39
+ ```
40
+
41
+ ### If the project uses uv (issue-flow's default)
42
+
43
+ For projects scaffolded fresh (and this is the default when nothing else is
44
+ documented), use `uv`:
45
+
46
+ ```bash
47
+ # ❌ BAD: bare interpreter
48
+ python run_script.py
49
+
50
+ # ✅ GOOD: through uv
51
+ uv run run_script.py
52
+ ```
53
+
54
+ **Package management with `uv`**
55
+
56
+ - Install, synchronize, and lock dependencies with `uv`; don't reach for `pip`,
57
+ `pip-tools`, or `poetry` in a uv-managed project.
58
+
59
+ ```bash
60
+ # Add or upgrade dependencies
61
+ uv add <package>
62
+
63
+ # Remove dependencies
64
+ uv remove <package>
65
+
66
+ # Reinstall all dependencies from the lock file
67
+ uv sync
68
+
69
+ # Run a script with the right environment
70
+ uv run script.py
71
+ ```
72
+
73
+ ### Other toolchains (plain venv / pip / poetry)
74
+
75
+ If the project uses something else, use whatever it documents (e.g. activate its
76
+ `.venv` and use `pip`, or run `poetry run`). Match the project; don't force `uv`.
77
+
78
+
79
+ ## Issue tracking structure
80
+
81
+ ```bash
82
+ cellpy-figure/
83
+ .issueflows/
84
+ 00-tools/
85
+ 01-current-issues/
86
+ issueXX_original.md
87
+ issueXX_status.md
88
+ 02-partly-solved-issues/
89
+ 03-solved-issues/
90
+ 04-designs-and-guides/
91
+ 05-epics/
92
+ epicXX_plan.md
93
+ pyproject.toml
94
+ readme.md
95
+ ...
96
+ ```
97
+
98
+
99
+ ## Development information
100
+
101
+
102
+ ### Working on issues
103
+
104
+ After each iteration, update the documents in `.issueflows/01-current-issues` (should contain one file labelled `_original` with the original issue description, a `_plan` file with the confirmed approach, and supplementary status files describing what has been done, current status, and remaining work).
105
+ Use an explicit status checkbox in the status file:
106
+ - `- [x] Done` when fully resolved
107
+ - `- [ ] Done` when not fully resolved
108
+
109
+ ### Chat invocation (no slash)
110
+
111
+ On keyboard layouts where `/` and `@` are awkward to type (for example Norwegian), invoke lifecycle skills in **chat** without special keys.
112
+
113
+ **Primary form:** `iflow <step>` (space-separated) — e.g. `iflow plan`, `iflow pick`, `iflow close`. Plain `iflow` runs the smart dispatcher.
114
+
115
+ **Also recognized** (same obligation as slash-menu invocation): hyphen form (`iflow-plan`), slash form (`/iflow-plan`), slash + space (`/iflow plan`).
116
+
117
+ When the user message is **exactly** one of these forms, or **starts with** it followed by a space and trailing arguments, **read and follow** the matching skill immediately. Forward trailing text verbatim (e.g. `iflow pick fix` → `iflow-pick` with arg `fix`). Do **not** treat incidental mid-sentence mentions as commands — the message must **start with** the invocation.
118
+
119
+ | Chat / slash form | Skill |
120
+ |-------------------|-------|
121
+ | `iflow` / `/iflow` | `iflow` (dispatcher) |
122
+
123
+ | `iflow archive`, `iflow-archive`, `/iflow-archive`, `/iflow archive` | `iflow-archive` |
124
+
125
+ | `iflow auto`, `iflow-auto`, `/iflow-auto`, `/iflow auto` | `iflow-auto` |
126
+
127
+ | `iflow build`, `iflow-build`, `/iflow-build`, `/iflow build` | `iflow-build` |
128
+
129
+ | `iflow capture`, `iflow-capture`, `/iflow-capture`, `/iflow capture` | `iflow-capture` |
130
+
131
+ | `iflow cleanup`, `iflow-cleanup`, `/iflow-cleanup`, `/iflow cleanup` | `iflow-cleanup` |
132
+
133
+ | `iflow close`, `iflow-close`, `/iflow-close`, `/iflow close` | `iflow-close` |
134
+
135
+ | `iflow cycle`, `iflow-cycle`, `/iflow-cycle`, `/iflow cycle` | `iflow-cycle` |
136
+
137
+ | `iflow doctor`, `iflow-doctor`, `/iflow-doctor`, `/iflow doctor` | `iflow-doctor` |
138
+
139
+ | `iflow drive`, `iflow-drive`, `/iflow-drive`, `/iflow drive` | `iflow-drive` |
140
+
141
+ | `iflow epic`, `iflow-epic`, `/iflow-epic`, `/iflow epic` | `iflow-epic` |
142
+
143
+ | `iflow fix`, `iflow-fix`, `/iflow-fix`, `/iflow fix` | `iflow-fix` |
144
+
145
+ | `iflow graphify`, `iflow-graphify`, `/iflow-graphify`, `/iflow graphify` | `iflow-graphify` |
146
+
147
+ | `iflow init`, `iflow-init`, `/iflow-init`, `/iflow init` | `iflow-init` |
148
+
149
+ | `iflow issue`, `iflow-issue`, `/iflow-issue`, `/iflow issue` | `iflow-issue` |
150
+
151
+ | `iflow ops`, `iflow-ops`, `/iflow-ops`, `/iflow ops` | `iflow-ops` |
152
+
153
+ | `iflow pause`, `iflow-pause`, `/iflow-pause`, `/iflow pause` | `iflow-pause` |
154
+
155
+ | `iflow pick`, `iflow-pick`, `/iflow-pick`, `/iflow pick` | `iflow-pick` |
156
+
157
+ | `iflow plan`, `iflow-plan`, `/iflow-plan`, `/iflow plan` | `iflow-plan` |
158
+
159
+ | `iflow pr-sync`, `iflow-pr-sync`, `/iflow-pr-sync`, `/iflow pr-sync` | `iflow-pr-sync` |
160
+
161
+ | `iflow review`, `iflow-review`, `/iflow-review`, `/iflow review` | `iflow-review` |
162
+
163
+ | `iflow setup`, `iflow-setup`, `/iflow-setup`, `/iflow setup` | `iflow-setup` |
164
+
165
+ | `iflow split`, `iflow-split`, `/iflow-split`, `/iflow split` | `iflow-split` |
166
+
167
+ | `iflow status`, `iflow-status`, `/iflow-status`, `/iflow status` | `iflow-status` |
168
+
169
+ | `iflow yolo`, `iflow-yolo`, `/iflow-yolo`, `/iflow yolo` | `iflow-yolo` |
170
+
171
+
172
+ Skill `@` attachment is supported on some editors but is not the recommended keyboard-friendly path.
173
+
174
+ ### Command lifecycle
175
+
176
+
177
+ If the project itself is not ready yet — no git repo, no remote, `gh` not authenticated, or no Python project — run **`/iflow-setup`** (or type **`iflow setup`** in chat) first. It reads `issue-flow agent setup-status`, works out whether this is a brand-new or an existing project, and walks the blockers one confirmation at a time. Off-path (never auto-dispatched).
178
+
179
+
180
+ If you have not chosen an issue yet, run **`/iflow-pick`** (or type **`iflow pick`** in chat) — the front door that helps you select the next issue (parked work first, else ranked open GitHub issues), creates the branch, and runs `/iflow-capture`. It is off-path (never auto-dispatched).
181
+
182
+ If you just want the next right step, run **`/iflow`** (or type **`iflow`** in chat) — it detects state (by file presence under `.issueflows/01-current-issues/` and the status-file `- [x] Done` marker) and dispatches to `/iflow-capture`, `/iflow-plan`, `/iflow-build`, or `/iflow-close`. With no focus issue, it checks active-epic `next_candidates` (`agent state` → `epic_hint`) and **recommends** `/iflow-pick` instead of a blind capture — or, when an `epic_session` is present, **asks** continue / switch / stop (never silent-pick) — it never auto-dispatches to the off-path commands (`/iflow-pick`, `/iflow-init`, `/iflow-pause`, `/iflow-cleanup`, `/iflow-yolo`, `/iflow-ops`).
183
+
184
+ The full slash-command lifecycle is:
185
+
186
+ 1. **`/iflow-capture`** — capture the GitHub issue as `issue<N>_original.md`.
187
+ 2. **`/iflow-plan`** — design the approach in `issue<N>_plan.md` and get explicit confirmation before any code changes.
188
+ 3. **`/iflow-build`** — implement the confirmed plan. Asks to run `/iflow-plan` first if the plan file is missing.
189
+ 4. **`/iflow-pause`** *(optional)* — park work mid-stream: update status, move the issue group to `02-partly-solved-issues`, optional WIP commit.
190
+ 5. **`/iflow-close`** — tests, optional `uv version --bump`, **changelog/`HISTORY.md` update (in the PR commit)**, status update, commit, push, PR. Does not delete branches. Never offer a HISTORY/CHANGELOG update after close finishes or after merge; use `nohistory` only to skip intentionally. (A draft opened earlier via `/iflow-build` early PR does not skip the close HISTORY step.)
191
+
192
+ 6. **`/iflow-cleanup`** — post-merge: switch to default, `git pull --ff-only`, `git fetch --prune`, `git branch -d` on reachable local branches under a single consolidated confirm. If ff-only fails, classify with `issue-flow agent default-sync` (never rebase / force-push / push default to skip CI). Squash-landed branches (which `-d` always refuses) need `git branch -D`, offered only behind a **second** confirm that lists tip SHAs; branches with unique work are never deleted. Trailing `include GitHub` (or similar) adds a remote-branch audit with a further confirm for optional remote deletes / findings issue.
193
+
194
+
195
+ `/iflow-yolo` chains `capture → plan → build → close yolo` for small, low-risk issues with up-front safeguards (clean tree, passing tests, single consolidated confirm). Its close step is hands-off: changelog decided without a prompt, PR merged (`gh pr merge --squash`; on pending checks may `gh pr checks --watch` then retry, with `--auto` as last resort), then default-branch switch + pull.
196
+
197
+
198
+ `/iflow-ops` runs **ops / no-PR** work (staging→prod, flag flips, external deploys): execute the checklist, then `/iflow-close ops` — no push/PR. Product-code dirty trees are refused. Off-path (never auto-dispatched).
199
+
200
+
201
+
202
+ `/iflow-init` cold-starts or checks the issue-flow harness (guides `issue-flow init` / `update`). It does **not** capture GitHub issues — that is `/iflow-capture`. Off-path (never auto-dispatched).
203
+
204
+
205
+
206
+ Issue labels can select the flow: when an issue picked via `/iflow-pick` carries the **`yolo`** label, it is routed through `/iflow-yolo` (one combined confirmation). The **`ops`** label routes to `/iflow-ops` (no PR); when both labels are present, **ops wins**. A **`publish`** label (or `publish:<level|version>`) does not change pick routing — on `/iflow-close` it requests a version bump (default patch) and a post-merge `gh release create`. Controlled by `label_flows` (default `true`), `yolo_label` (default `"yolo"`), `ops_label` (default `"ops"`), and `publish_label` (default `"publish"`) under `[issueflow]` in `.issueflows/config.toml`; re-run `issue-flow update` after changing them.
207
+
208
+
209
+
210
+ Lifecycle skills include a **`### MODEL & EXECUTION DIRECTIVE`** section that tells agents whether to prioritize **economy** (speed) or **reasoning** (depth) for that step. Toggle with `step_directives` under `[issueflow]`; override per step via `[issueflow.step_profiles]`; optional label hints during `/iflow-pick` via `model_label_flows`, `deep_model_label`, and `fast_model_label`. Re-run `issue-flow update` after changing any of these.
211
+
212
+
213
+
214
+ `/iflow-fix` opens an interactive iterative-fixes session: it creates one GitHub issue + long-lived branch, then loops over many small fixes (each gets a short plan and is implemented only on confirmation, recorded as a dated bullet in `issue<N>_status.md`), and ends with `/iflow-close`. It is off-path (never auto-dispatched); while a session is active, drive it with `/iflow-fix` + `/iflow-close`, not `/iflow`. With `fix_auto_name = false` (default), inventing a non-default slug asks once before the create confirm. Toggle via `fix_auto_name` under `[issueflow]` in `.issueflows/config.toml`; re-run `issue-flow update` after changing.
215
+
216
+
217
+ `/iflow-issue` creates **one well-specified normal GitHub issue** (context / spec / acceptance criteria), then optionally branches and runs `/iflow-capture` into the standard lifecycle. It fills the gap between `/iflow-fix` (iterative small-fixes) and `/iflow-epic` (multi-issue staged work). Off-path (never auto-dispatched). For an epic anchor: `/iflow-issue epic <intent>`.
218
+
219
+
220
+ `/iflow-split` cuts **one over-large existing issue** into 2–5 flat GitHub native sub-issues behind one consolidated confirm (parent stays open as the tracker). Off-path (never auto-dispatched). Staged work with dependencies still goes through `/iflow-epic`. `/iflow-pick` / `/iflow-issue` / `/iflow-plan` may *offer* split; they never create children themselves.
221
+
222
+
223
+ `/iflow-status` prints a **read-only** overview of where every issue stands — the local tracking state under `.issueflows/` (focus / parked / solved) plus open GitHub issues cross-referenced against it. It is off-path (never auto-dispatched) and changes nothing.
224
+
225
+
226
+ `/iflow-doctor` audits `.issueflows/` for **dirty** conditions (ambiguous multi-focus, leftovers in `01-current-issues/`, duplicates across folders, and similar) and can apply **safe repairs** on confirmation (`issue-flow doctor` / `agent audit` + `repair`). It is off-path and never auto-dispatched.
227
+
228
+
229
+ `/iflow-review` reviews open GitHub issues and applies labels (extendable kinds; v1: **yolo** → configured `yolo_label`). Off-path; consolidated confirm before any label create/apply; never auto-dispatched. CLI helpers: `issue-flow agent label-candidates` / `label-apply`.
230
+
231
+
232
+ `/iflow-epic <N>` plans a change **too large for one issue** as a staged epic: it drafts `.issueflows/05-epics/epic<N>_plan.md` (anchored to GitHub issue `<N>`), dividing the work into sequential stages of manageable issue specs with explicit dependencies and a per-issue yolo-fitness judgment. Drafting writes nothing on GitHub; **`/iflow-epic <N> publish [stage <k>]`** creates a confirmed stage's issues behind one consolidated confirm (yolo labels per the recorded judgment, task list maintained on the anchor issue, `Published: #<M>` recorded back into the plan so re-runs are idempotent). **`/iflow-epic start [N]`** writes a one-and-ask `epic_session.md`; **`/iflow-epic stop`** clears it — `/iflow` then asks before the next child (never silent-pick). Off-path (never auto-dispatched); epics decompose into the normal single-issue lifecycle, never around it.
233
+
234
+
235
+ `/iflow-cycle <queue-spec>` processes **many issues hands-off in a row** under a single up-front confirmation — the batch equivalent of `/iflow-yolo`. It resolves a queue via `issue-flow agent queue` (explicit numbers, `label:<L>`, or `epic <N> [stage <k>]`), then runs each issue through the full yolo chain (PR auto-merged), interrupting you only when input is **strictly necessary** (unfixable failure, refused merge / non-fast-forward pull, ambiguous or not-actually-small spec, or anything outside the confirmed queue). It stops the whole cycle on the first such condition, leaving the repo clean on the default branch. **All yolo-labelled issues:** `/iflow-cycle yolo` (alias for `label:yolo`). Off-path (never auto-dispatched); never weakens a yolo safeguard to keep moving.
236
+
237
+
238
+ `/iflow-auto <N>` runs an **unattended large-change** path over a confirmed epic: select a stage, drive it via `/iflow-cycle`, record `auto_status.md`, then adversarial inter-epoch review (`review` token; may reopen/create issues under the overnight confirm). On findings, honour the loop budget (re-queue + re-review, or **stop and ask**: accept / grant N more loops / abort). Advance to stage `k+1` only when stage `k` is clear (`epic-status` done + no open blockers); otherwise `epoch_gated`. Budget baked as **2** (`loops:<n>` overrides). Off-path (never auto-dispatched). See `.issueflows/04-designs-and-guides/advanced-auto-mode.md`.
239
+
240
+
241
+ `/iflow-drive <N>` runs a **compose-only** path from an existing GitHub issue: draft epic (auto-confirm unless grill-me) → publish every stage → `/iflow-auto` each epoch → final review (create leftover findings) → local cleanup **`-d` only** → `/iflow-status`. One confirm covers draft-accept, publish-all, auto-all, final-review creates, and reachable-only cleanup. User `abort` / `stop` / `cancel` / `halt` stops at the next boundary. Off-path (never auto-dispatched). See `.issueflows/04-designs-and-guides/drive-mode.md`.
242
+
243
+
244
+ `/iflow-archive` condenses old solved issue groups under `.issueflows/03-solved-issues/` into a single dated `YYYY-MM-DD_archived_issues.md` summary file (recording the pre-archive git ref for recovery via `git show <ref>:<path>`), then deletes the original `issue<N>_*` files. It is off-path and destructive: nothing is deleted before one consolidated confirmation.
245
+
246
+
247
+ `/iflow-pr-sync` refreshes **open** PR heads that went `DIRTY` after another merge (usually `HISTORY.md`): worktree → `issue-flow agent sync-branch` keep-both → `git push --force-with-lease`. Off-path; see `.issueflows/04-designs-and-guides/pr-queue-sync.md` (issue #260).
248
+
249
+
250
+
251
+ > On tools without project slash commands (e.g. Codex CLI), invoke the mirrored Agent Skills instead (for example `iflow-capture` in place of `/iflow-capture`).
252
+
253
+ ### When finishing an issue
254
+
255
+ If the issue is fully resolved (no additional subtasks present), move the original, plan, and status markdown files to `.issueflows/03-solved-issues`. Else, move them to `.issueflows/02-partly-solved-issues`.
256
+
257
+ ### Scripts that can help us when working on issues
258
+
259
+ `.issueflows/00-tools/` is the project's durable toolbox of reusable helper scripts, with a `README.md` index describing each one.
260
+
261
+ - **Check it first.** Before writing a new one-off helper for an issue, skim the `00-tools/README.md` index and the folder — a suitable tool may already exist.
262
+ - **Contribute back.** If you build something during an issue that could help on a future one, save it into `.issueflows/00-tools/` and add a one-line entry to the index (name, what it does, when to use it) so the next agent knows whether to reach for it.
263
+
264
+
265
+
266
+ ### Optional response styles
267
+
268
+ A **caveman** Agent Skill is installed under `.cursor/skills/caveman/`. It
269
+ is a terse, "token-greedy" response style that keeps all technical substance
270
+ while dropping filler, articles, and pleasantries. It is **off by default** and
271
+ only kicks in when the user asks for it (e.g. "caveman", "token greedy", "be
272
+ terse"). Turn it off with **"stop caveman"** or **"normal mode"**. Code,
273
+ commits, PRs, security warnings, and destructive-action confirmations are always
274
+ written in normal prose, never caveman. (To make caveman on by default for this
275
+ project, set `caveman_default = true` under `[issueflow]` in
276
+ `.issueflows/config.toml` and re-run `issue-flow update`.)
277
+
278
+
279
+
280
+
281
+ ### Planning aids
282
+
283
+ A **grill-me** Agent Skill is installed under `.cursor/skills/grill-me/`.
284
+ It runs a relentless planning interview that stress-tests a plan or design —
285
+ one question at a time, each with a recommended answer — until every branch of
286
+ the decision tree is resolved. It is **off by default** and only kicks in when
287
+ you ask for it (e.g. "grill me", "poke holes in this"). Turn it off with **"stop
288
+ grilling"** or **"normal mode"**. (To make grilling on by default during planning
289
+ for this project, set `grill_me_default = true` under `[issueflow]` in
290
+ `.issueflows/config.toml` and re-run `issue-flow update`.)
291
+
292
+
293
+
294
+
295
+ ### CI via GitHub CLI
296
+
297
+ A **gh-ci** Agent Skill is installed under `.cursor/skills/gh-ci/`. Use
298
+ it whenever you need to know if CI finished: prefer `gh pr checks` /
299
+ `gh pr checks --watch --fail-fast` (budget: `checks_watch_minutes`, default
300
+ 15); fall back to `gh run list` / `gh run watch` when PR
301
+ checks are empty. Always pass `--repo <owner/repo>`. `/iflow-close` owns the
302
+ merge sequence; this skill is the shared command cheatsheet.
303
+
304
+
305
+
306
+ ### Designs and guides
307
+
308
+ Long-lived design docs, design decisions, and project "good practices" live under `.issueflows/04-designs-and-guides/`. Unlike the issue folders, content here is **not** tied to a single issue and is **not** archived when an issue closes — it is the project's durable memory.
309
+
310
+ - **Project brief:** if `.issueflows/04-designs-and-guides/this-project.md` exists, read it early for project-specific context (what the repo is, stack/runtime, how to run/test, conventions, entry points, and known limitations).
311
+ - **Before planning or implementing**, skim `.issueflows/04-designs-and-guides/` for existing docs relevant to the current issue and follow them (cite them in the plan when they influence the approach).
312
+ - **When a non-trivial design decision is made** during `/iflow-plan` or `/iflow-build`, add or update a markdown file here. Keep entries terse: context, the decision, alternatives considered, and a link back to the issue.
313
+ - **Never overwritten by `issue-flow update`.** The folder is recreated if missing, but existing files are left alone.
314
+
315
+
316
+ ### Multi-root workspaces
317
+
318
+ When an editor workspace contains **multiple sibling repositories**, each with its own `.issueflows/` scaffold:
319
+
320
+ - **Resolve the target repo first** — explicit `root:` / `repo:` hints, then `issue-flow agent resolve`, then branch/single-scaffold heuristics, then the **workspace default** from `issueflow-workspace.toml` at the workspace root (create it with `issue-flow workspace init`); **ask** when still ambiguous. Never let `git` or `gh` infer the repo from cwd alone.
321
+ - **Scoped rules** — this repo's `issueflow-rules` apply under this project root only (path globs). Put **toolchain-specific** run/test commands in `.issueflows/04-designs-and-guides/this-project.md`, not in shared boilerplate that every repo merges.
322
+ - **Per-repo lifecycle** — `/iflow-cleanup`, branch hygiene, and focus issue folders are **per repository**; repeat commands in each repo when needed.
323
+ - **Design doc** — see `.issueflows/04-designs-and-guides/multi-repo-workspaces.md` when present (issue #67).
324
+
325
+
326
+ ### Branch hygiene
327
+
328
+ - Do issue work on an **issue branch** named like `<N>-<short-slug>`, not on the default branch.
329
+ - Before starting or continuing work on an issue branch, run `git fetch --prune` and check where the branch sits relative to `origin/<default>` (ahead/behind). A branch that is "several commits ahead" after a merged PR usually means the PR was merged (this project uses **`squash`**) and the local branch is stale.
330
+ - **Assume `squash` merges on GitHub.** After a PR merges, **remind** the user to run **`/iflow-cleanup`** (switch to default, `git pull --ff-only`, `git fetch --prune`, `git branch -d` on reachable locals under one confirm, plus a second confirm for the squash-landed branches that `-d` can never take). Do **not** auto-run cleanup from close/yolo/cycle; `/iflow-close` no longer does this step itself.
331
+
332
+ - If an issue is already archived under `.issueflows/02-partly-solved-issues` or `.issueflows/03-solved-issues`, the matching local branch is stale; don't resume work on it silently — switch back to the default branch and, if the issue really needs re-opening, do it deliberately through `/iflow-capture` (which will ask for a second confirmation).
333
+
334
+
335
+ ### Folder hygiene for `.issueflows/01-current-issues`
336
+
337
+ - Only the **focus issue** (the one currently being worked on) should live in `.issueflows/01-current-issues`.
338
+ - `/iflow-capture` and `/iflow-build` both sweep that folder automatically: every `issue<n>_*` group **other than the focus issue** is moved to `.issueflows/03-solved-issues` if a status file contains `- [x] Done`, otherwise to `.issueflows/02-partly-solved-issues`. Keep status files accurate so the sweep routes them correctly.
339
+
340
+
341
+ ### Knowledge graph (optional, via [graphify](https://graphify.net))
342
+
343
+ If a `graphify-out/` folder exists in the project root, the project has the optional [graphify](https://graphify.net) integration enabled and a knowledge graph is available alongside the source.
344
+
345
+ - **Before grepping**, skim `graphify-out/GRAPH_REPORT.md`. It surfaces god-nodes (most-connected concepts), surprising cross-module connections, and suggested questions the graph can answer — often a faster way to locate the files an issue actually touches than full-text search.
346
+ - **`/iflow-graphify`** (slash command) or **`issue-flow graphify`** (CLI) rebuild the graph. With no extra args this runs `graphify update <project>` — AST-only, **no LLM API key needed**. For richer semantic relationships (cross-file links surfaced by an LLM pass), run `issue-flow graphify extract` after setting `GEMINI_API_KEY` / `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `MOONSHOT_API_KEY` (or pass `--backend ollama` for a local LLM). Other subcommands: `watch` (live), `cluster-only --no-viz` (re-cluster). Trailing flags pass through verbatim. Your agent's own LLM cannot be reused by subprocesses; graphify needs its own backend.
347
+ - `/iflow-graphify` is **off-path**: never auto-dispatched by `/iflow`, `/iflow-build`, or `/iflow-close`. It is the user's call. `/iflow-build` may *suggest* skimming `GRAPH_REPORT.md`; `/iflow-close` may *suggest* a rebuild after large structural changes — neither runs `graphify` automatically.
348
+ - If `graphify-out/` is not present, ignore graph-related guidance entirely. The integration is opt-in (install with `uv tool install graphifyy`, then `issue-flow update` to register the graphify skill).
349
+
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: caveman
3
+ description: >-
4
+ Respond in a terse "smart caveman" style that keeps all technical substance
5
+ but drops filler, articles, and pleasantries. Use when the user asks for
6
+ caveman mode, token-greedy / terse answers, or says "be brief" / "stop
7
+ wasting tokens". Stays active across the session once on; off via "stop
8
+ caveman" / "normal mode".
9
+ issue-flow-version: 0.4.2a4
10
+ ---
11
+
12
+ # Be token greedy - as a caveman
13
+
14
+ Respond terse like smart caveman. All technical substance stay. Only fluff die.
15
+
16
+ ## Persistence
17
+
18
+ ACTIVE EVERY RESPONSE once turned on. No revert after many turns. No filler drift. Still active if unsure. Off only: "stop caveman" / "normal mode".
19
+
20
+ ## Rules
21
+
22
+ Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). No tool-call narration, no decorative tables/emoji, no dumping long raw error logs unless asked — quote shortest decisive line. Standard well-known tech acronyms OK (DB/API/HTTP); never invent new abbreviations reader can't decode. Technical terms exact. Code blocks unchanged. Errors quoted exact.
23
+
24
+ No self-reference. Never name or announce the style. No "caveman mode on", "me caveman think", no third-person caveman tags. Output caveman-only — never normal answer plus "Caveman:" recap. Exception: user explicitly ask what the mode is.
25
+
26
+ Pattern: `[thing] [action] [reason]. [next step].`
27
+
28
+ Not: "Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by..."
29
+ Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"
30
+
31
+ English only. Caveman applies to English output; do not garble other languages.
32
+
33
+ ## Intensity
34
+
35
+ Single level: **full**. Classic caveman — every rule above applies at full strength; there is no milder setting.
36
+
37
+ Example — "Why React component re-render?"
38
+ - "New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`."
39
+
40
+ Example — "Explain database connection pooling."
41
+ - "Pool reuse open DB connections. No new connection per request. Skip handshake overhead."
42
+
43
+ ## Auto-Clarity
44
+
45
+ Drop caveman when:
46
+ - Security warnings
47
+ - Irreversible action confirmations
48
+ - Multi-step sequences where fragment order or omitted conjunctions risk misread
49
+ - Compression itself creates technical ambiguity (e.g., `"migrate table drop column backup first"` — order unclear without articles/conjunctions)
50
+ - User asks to clarify or repeats question
51
+
52
+ Resume caveman after clear part done.
53
+
54
+ Example — destructive op:
55
+ > **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.
56
+ > ```sql
57
+ > DROP TABLE users;
58
+ > ```
59
+ > Caveman resume. Verify backup exist first.
60
+
61
+ ## Boundaries
62
+
63
+ Code/commits/PRs: write normal. "stop caveman" or "normal mode": revert. Mode persist until changed or session end.
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: gh-ci
3
+ description: >-
4
+ Use GitHub CLI to snapshot or wait on CI for a pull request or workflow run.
5
+ Prefer issue-flow agent pr-ready when the question is merge-ready; keep
6
+ gh pr checks / gh pr checks --watch as the raw cheatsheet. Fall back to
7
+ gh run list and gh run watch when PR checks are empty or unavailable. Use
8
+ when waiting for CI, merge-ready, Actions pending/failed, or the user
9
+ mentions gh run watch / gh pr checks / "CI green".
10
+ issue-flow-version: 0.4.2a4
11
+ ---
12
+
13
+ # gh-ci — wait on GitHub CI with `gh`
14
+
15
+ Teach agents the concrete `gh` commands for **listing** and **watching** CI.
16
+ Always pass `--repo <owner/repo>` (never rely on `gh`'s cwd default).
17
+
18
+ ## Merge-ready (preferred)
19
+
20
+ When the question is “can this PR merge yet?” (draft / review / mergeability /
21
+ required checks), prefer the classifier — it does **not** merge:
22
+
23
+ ```bash
24
+ issue-flow agent pr-ready [N] [--watch]
25
+ ```
26
+
27
+ Exit 0 only when `state` is `ready`. `--watch` polls until ready, blocked, or
28
+ the **15-minute** budget elapses. Yolo still owns
29
+ `gh pr merge` / `gh pr checks --watch`.
30
+
31
+ ## Primary (PR-attached checks)
32
+
33
+ Prefer these when you need the raw check list (usual `/iflow-close` snapshot):
34
+
35
+ ```bash
36
+ # One-shot snapshot — exit 0 means green (or all pass / skipping)
37
+ gh pr checks <number> --repo <owner/repo>
38
+
39
+ # Wait until checks finish (or fail-fast on red)
40
+ gh pr checks <number> --repo <owner/repo> --watch --fail-fast
41
+ ```
42
+
43
+ **Budget:** honour **15 minutes** wall-clock for any
44
+ `--watch` (from `[issueflow].checks_watch_minutes` /
45
+ `ISSUEFLOW_CHECKS_WATCH_MINUTES`, default 15). `gh` has no max-duration flag —
46
+ the agent stops the watch when the cap hits.
47
+
48
+ ## Fallback (workflow runs)
49
+
50
+ When `gh pr checks` returns empty, cannot resolve checks, or there is no PR yet
51
+ but a workflow run id is known:
52
+
53
+ ```bash
54
+ gh run list --repo <owner/repo> --limit 10
55
+ gh run watch <run-id> --repo <owner/repo>
56
+ ```
57
+
58
+ Optional: `gh run view <run-id> --repo <owner/repo> --log-failed` after a red
59
+ run to surface failing job logs.
60
+
61
+ ## Semantics
62
+
63
+ | Result | Meaning | Agent action |
64
+ |--------|---------|--------------|
65
+ | Exit 0 / all `pass` or `skipping` | CI green | Proceed (merge, report green, etc.) |
66
+ | Fail / `--fail-fast` | CI red | Stop hands-off paths; report failing check/run URLs |
67
+ | Still pending past budget | Unknown | Do not hang; report pending and follow the calling skill (e.g. close yolo may fall back to `--auto`) |
68
+
69
+ ## Where this fits
70
+
71
+ - **`/iflow-close`** owns the merge / yolo watch-then-merge sequence; this skill
72
+ is the shared cheatsheet for the CI commands themselves.
73
+ - Design record: `.issueflows/04-designs-and-guides/gh-list-and-watch.md`
74
+ (issues #172, #220).
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: grill-me
3
+ description: >-
4
+ Interview the user relentlessly about a plan or design until every branch of
5
+ the decision tree is resolved, then feed the conclusions into the issue plan.
6
+ Use when the user wants to stress-test a plan, asks to "grill me", or during
7
+ /iflow-plan when grilling is turned on. Off via "stop grilling" / "normal mode".
8
+ issue-flow-version: 0.4.2a4
9
+ ---
10
+
11
+ # Grill me — relentless planning interview
12
+
13
+ Interview the user about every aspect of the plan until you reach a shared,
14
+ unambiguous understanding. Walk down each branch of the design tree, resolving
15
+ dependencies between decisions one at a time. The goal is to surface hidden
16
+ assumptions and edge cases **before** they get encoded in code or written into
17
+ `.issueflows/01-current-issues/issue<N>_plan.md`.
18
+
19
+ ## When to use
20
+
21
+ - The user asks to be grilled / stress-tested ("grill me", "poke holes in this").
22
+ - During `/iflow-plan`, when grilling is active (see *Activation* below), to
23
+ pressure-test the approach before the plan file is drafted.
24
+
25
+ ## How to grill
26
+
27
+ - **One question at a time.** Never batch questions. Wait for the answer before
28
+ moving to the next branch.
29
+ - **Always recommend an answer.** For each question, give your recommended option
30
+ and a one-line rationale, so the user can accept quickly or push back.
31
+ - **Explore before asking.** If a question can be answered by reading the code,
32
+ the issue text, or `.issueflows/04-designs-and-guides/`, explore first
33
+ and confirm what you found instead of asking the user to do your homework.
34
+ - **Follow the decision tree.** Resolve upstream decisions before the ones that
35
+ depend on them; let earlier answers prune later branches.
36
+ - **Stay on scope.** Grill the issue at hand. Park genuinely separate concerns as
37
+ follow-up notes rather than expanding the interview indefinitely.
38
+ - **Know when to stop.** End when every open branch is resolved (or explicitly
39
+ deferred) and you can restate the plan without ambiguity. Summarize the agreed
40
+ decisions so they can flow straight into the plan.
41
+
42
+ ## Activation
43
+
44
+ This skill is **dormant by default**: it engages only when the user asks for it
45
+ ("grill me") or when a project turns it on for planning.
46
+
47
+ Turn it off again for the rest of a session with **"stop grilling"** or
48
+ **"normal mode"**. (To make grilling on by default during planning for this
49
+ project, set `grill_me_default = true` under `[issueflow]` in
50
+ `.issueflows/config.toml` and re-run `issue-flow update`.)
51
+
52
+
53
+ ## Boundaries
54
+
55
+ - Grilling is a **planning** aid: it questions and aligns, it does not write code.
56
+ - Hand the agreed decisions to `/iflow-plan` so they land in `issue<N>_plan.md`;
57
+ implementation still goes through `/iflow-build`.