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.
- cellpy_figure-0.1.0/.cursor/rules/graphify.mdc +10 -0
- cellpy_figure-0.1.0/.cursor/rules/issueflow-rules.mdc +349 -0
- cellpy_figure-0.1.0/.cursor/skills/caveman/SKILL.md +63 -0
- cellpy_figure-0.1.0/.cursor/skills/gh-ci/SKILL.md +74 -0
- cellpy_figure-0.1.0/.cursor/skills/grill-me/SKILL.md +57 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow/SKILL.md +111 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-archive/SKILL.md +92 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-auto/SKILL.md +181 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-build/SKILL.md +111 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-capture/SKILL.md +110 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-cleanup/SKILL.md +144 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-close/SKILL.md +191 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-comments/SKILL.md +101 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-cycle/SKILL.md +157 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-doctor/SKILL.md +119 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-drive/SKILL.md +187 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-epic/SKILL.md +178 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-fix/SKILL.md +111 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-graphify/SKILL.md +79 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-history-update/SKILL.md +113 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-init/SKILL.md +145 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-issue/SKILL.md +111 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-ops/SKILL.md +77 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-pause/SKILL.md +80 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-pick/SKILL.md +137 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-plan/SKILL.md +113 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-pr-sync/SKILL.md +106 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-review/SKILL.md +138 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-setup/SKILL.md +117 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-split/SKILL.md +114 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-status/SKILL.md +98 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-version-bump/SKILL.md +116 -0
- cellpy_figure-0.1.0/.cursor/skills/iflow-yolo/SKILL.md +85 -0
- cellpy_figure-0.1.0/.gitignore +220 -0
- cellpy_figure-0.1.0/.issueflows/00-tools/.gitkeep +0 -0
- cellpy_figure-0.1.0/.issueflows/00-tools/README.md +29 -0
- cellpy_figure-0.1.0/.issueflows/01-current-issues/.gitkeep +0 -0
- cellpy_figure-0.1.0/.issueflows/02-partly-solved-issues/.gitkeep +0 -0
- cellpy_figure-0.1.0/.issueflows/02-partly-solved-issues/issue6_original.md +38 -0
- cellpy_figure-0.1.0/.issueflows/02-partly-solved-issues/issue6_plan.md +66 -0
- cellpy_figure-0.1.0/.issueflows/02-partly-solved-issues/issue6_status.md +18 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/.gitkeep +0 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue1_original.md +35 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue1_status.md +5 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue2_original.md +31 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue2_status.md +5 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue3_original.md +31 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue3_plan.md +58 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue3_status.md +5 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue4_original.md +28 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue4_plan.md +53 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue4_status.md +15 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue5_original.md +28 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue5_plan.md +58 -0
- cellpy_figure-0.1.0/.issueflows/03-solved-issues/issue5_status.md +5 -0
- cellpy_figure-0.1.0/.issueflows/04-designs-and-guides/.gitkeep +0 -0
- cellpy_figure-0.1.0/.issueflows/04-designs-and-guides/essential-tests.md +70 -0
- cellpy_figure-0.1.0/.issueflows/04-designs-and-guides/test-registry.md +21 -0
- cellpy_figure-0.1.0/.issueflows/04-designs-and-guides/this-project.md +48 -0
- cellpy_figure-0.1.0/.issueflows/05-epics/.gitkeep +0 -0
- cellpy_figure-0.1.0/.issueflows/agent/skill-stamps.json +36 -0
- cellpy_figure-0.1.0/.python-version +1 -0
- cellpy_figure-0.1.0/AGENTS.md +343 -0
- cellpy_figure-0.1.0/HISTORY.md +9 -0
- cellpy_figure-0.1.0/LICENSE +21 -0
- cellpy_figure-0.1.0/PKG-INFO +48 -0
- cellpy_figure-0.1.0/PLAN.md +681 -0
- cellpy_figure-0.1.0/README.md +24 -0
- cellpy_figure-0.1.0/pyproject.toml +71 -0
- cellpy_figure-0.1.0/src/cellpy_figure/__init__.py +16 -0
- cellpy_figure-0.1.0/src/cellpy_figure/facets.py +49 -0
- cellpy_figure-0.1.0/src/cellpy_figure/io.py +448 -0
- cellpy_figure-0.1.0/src/cellpy_figure/model.py +140 -0
- cellpy_figure-0.1.0/src/cellpy_figure/mpl.py +324 -0
- cellpy_figure-0.1.0/src/cellpy_figure/plotly.py +404 -0
- cellpy_figure-0.1.0/src/cellpy_figure/presets.py +97 -0
- cellpy_figure-0.1.0/src/cellpy_figure/py.typed +0 -0
- cellpy_figure-0.1.0/src/cellpy_figure/schema/__init__.py +22 -0
- cellpy_figure-0.1.0/src/cellpy_figure/schema/figure-1.json +72 -0
- 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`.
|