You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After maintainers comment on an open PR, dump review threads into a **local markdown file** for an agent (or you) to implement fixes. Uses **`gh` only** (no direct GitHub REST in this tool). Install and authenticate [GitHub CLI](https://cli.github.com/) on the host.
161
+
162
+
**Default output:**`<contribution-repo>/.iynx/pr-review-feedback.md` — only if that path is **gitignored** in the target repo; otherwise pass **`--output`** or set **`IYNX_PR_REVIEW_FEEDBACK_PATH`**. **Do not commit** that file.
163
+
164
+
```bash
165
+
# From inside the contribution clone (branch can be set with gh pr checkout)
**Clone / checkout (normalize first):** from the contribution repo, run `git fetch` and `gh pr checkout <N>` (same PR as your branch). If you have no clone yet, clone the **head** repository from `gh pr view <url> --json headRepository,baseRepository`, add `upstream` when the PR is from a fork, then `gh pr checkout`.
177
+
178
+
**Exit codes:**`0` file written; `1` usage or local validation (e.g. default path not gitignored); `2``gh`/GitHub error.
179
+
180
+
See `skills/issue-fix-workflow.md` § PR review follow-up and `docs/superpowers/specs/2026-03-24-pr-review-followup-design.md`.
181
+
158
182
## Environment Variables
159
183
160
184
| Variable | Required | Description |
@@ -166,6 +190,7 @@ Use **`IYNX_PR_LABEL`** when running the agent so new PRs get the same label and
166
190
|`IYNX_STATS_NO_LABEL`| No | If `1`/`true`, same as `python stats.py --no-label` (author + branch only; no label in search) |
167
191
|`IYNX_STATS_BRANCH_REGEX`| No | Override branch regex for `stats.py` (default matches `fix/issue-<n>`) |
168
192
|`IYNX_STATS_AUTHOR`| No | GitHub login for `stats.py` (default: token’s user) |
193
+
|`IYNX_PR_REVIEW_FEEDBACK_PATH`| No | Output path for `python pr_review.py` when `--output` is omitted (same effect as `--output`; use to write without a local clone). For the default `.iynx/pr-review-feedback.md` path, you still need a repo root and a gitignored target unless you set this to a path outside the repo |
169
194
|`IYNX_PROGRESS_JSONL`| No | Path to JSONL progress file; empty/`0`/`false` disables the file |
170
195
|`IYNX_DOCKER_TTY`| No | If `1` (default), `docker run -t` for streamed steps so Cursor CLI output is line-buffered to the host; set `0` if `-t` fails (e.g. some CI) |
171
196
|`IYNX_DOCKER_TRACE`| No | If `1` (default), every Docker shell step prints `[iynx-docker]` timestamp lines (clone, bootstrap, `cursor-agent`, verify, PR) so `docker logs` / host `[docker]` lines show clear phases; set `0` to silence |
@@ -194,8 +219,10 @@ iynx/
194
219
│ ├── bootstrap.py # Generate .cursor-agent per repo
195
220
│ ├── workflow_progress.py # JSONL progress for agents
Use this when an open PR already exists and reviewers left feedback. **Contribution repo** = the upstream project you fixed (not the Iynx `the-fixer` repo unless that is your target).
-**Policy:** Never commit this file. It is local scratch for the agent.
109
+
-**Gitignore:** The helper refuses the default path unless Git ignores it (`git check-ignore`). If the upstream repo does not ignore `.iynx/`, pass **`--output`** or set **`IYNX_PR_REVIEW_FEEDBACK_PATH`** to a path outside the repo (or add an ignore rule locally without committing it—prefer `--output`).
110
+
111
+
### Phase 1 — Normalize (existing clone)
112
+
113
+
From the contribution clone (e.g. `workspace/owner-repo/`):
114
+
115
+
```bash
116
+
git fetch --all --prune
117
+
gh pr checkout <PR_NUMBER>
118
+
```
119
+
120
+
```powershell
121
+
git fetch --all --prune
122
+
gh pr checkout <PR_NUMBER>
123
+
```
124
+
125
+
### Phase 1 — Normalize (PR only, no clone yet)
126
+
127
+
1. Inspect head vs base: `gh pr view <URL> --json headRepository,baseRepository`.
128
+
2. If **head** equals **base** (same `nameWithOwner`): clone that repo, then `gh pr checkout <N>`.
129
+
3. Else (fork PR): clone the **head** repo’s URL from JSON, add `upstream` to the **base** repo URL, then `gh pr checkout <N>` from that clone.
130
+
131
+
### Phase 2 — Fetch review text into markdown
132
+
133
+
From the **Iynx** project root (or any cwd if you use `--output` / env):
134
+
135
+
```bash
136
+
# Inside contribution clone; writes .iynx/pr-review-feedback.md if gitignored
Requires **`gh`** installed and authenticated. If **`--output`** is omitted, **`IYNX_PR_REVIEW_FEEDBACK_PATH`** is used when set; otherwise the default is `.iynx/pr-review-feedback.md` under the contribution repo (requires that path to be gitignored).
152
+
153
+
### Phase 3 — Implement, verify, push
154
+
155
+
1. Read the markdown file; address each review thread; ask on the PR if something is ambiguous.
156
+
2. Run tests (and lint/format) using `.iynx/context.json``test_command` / `lint_command` when present, else CONTRIBUTING.
157
+
3. Commit (do not add `pr-review-feedback.md`); push to the **same branch** as the PR head.
158
+
159
+
**Exit codes:**`0` = file written; `1` = usage or local validation; `2` = `gh`/GitHub error.
0 commit comments