@rtorcato/repo-tooling 3.16.2 ā 3.16.3
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.
|
@@ -108,7 +108,7 @@ export async function setupProject(options) {
|
|
|
108
108
|
const interactive = !options.config && !options.preset;
|
|
109
109
|
const dryRun = options.dryRun === true;
|
|
110
110
|
if (interactive && !dryRun) {
|
|
111
|
-
console.log(chalk.cyan('\nš ļø Welcome to
|
|
111
|
+
console.log(chalk.cyan('\nš ļø Welcome to repo-tooling setup!\n'));
|
|
112
112
|
console.log(chalk.gray(`Setting up tooling in: ${targetDir}\n`));
|
|
113
113
|
}
|
|
114
114
|
try {
|
package/package.json
CHANGED
|
@@ -43,14 +43,12 @@ real approvals.
|
|
|
43
43
|
|
|
44
44
|
The same constraint makes everything an agent posts *look* hand-written by the
|
|
45
45
|
owner. So **every comment any agent leaves ā review, blocked, gave-up, declined ā
|
|
46
|
-
opens with a `š¤ *Automated ā¦*` italic header line
|
|
47
|
-
|
|
48
|
-
human's avatar misrepresents who reviewed the code
|
|
46
|
+
opens with a `š¤ *Automated ā¦*` italic header line naming which agent wrote it**,
|
|
47
|
+
then a blank line. Name the agent and stop there: a detailed security review
|
|
48
|
+
under a human's avatar misrepresents who reviewed the code, but *why* it wears
|
|
49
|
+
that avatar is read once and then reread on every comment forever.
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
header names the agent *and* says why it is wearing a human's face:
|
|
52
|
-
|
|
53
|
-
`š¤ *Automated ā <which agent> via ai-issue-loop. Posted under the owner's account by an agent; not a human message. There is no separate GitHub account for AI agents, so this appears under @<owner>'s avatar.*`
|
|
51
|
+
`š¤ *Automated ā <which agent> via ai-issue-loop.*`
|
|
54
52
|
|
|
55
53
|
**Comment budget: ā¤10 lines, and a clean outcome gets no comment at all.** A
|
|
56
54
|
40-line comment on every PR trains the reader to skip all of them, including the
|
|
@@ -63,7 +61,7 @@ drift with a second copy to maintain.
|
|
|
63
61
|
| Clean and ready | **None.** `ai-ok-code, ai-ok-sec` + assigned + no `ai-review` already says it. |
|
|
64
62
|
| `ai-notes` | ā¤10 lines; link the reviewer's `### Before merging`. |
|
|
65
63
|
| `ai-changes`, CI red, `ai-blocked` | ā¤10 lines, action first, then the specific cause. |
|
|
66
|
-
| Reviewer verdict | `### Before merging` plus
|
|
64
|
+
| Reviewer verdict | `### Before merging` plus ā¤600 characters above it. |
|
|
67
65
|
| Declining an issue | The one exception ā a hard handoff needs its reasoning; see Pass 4. |
|
|
68
66
|
|
|
69
67
|
## Labels
|
|
@@ -448,7 +446,7 @@ ping-pong stop and an implementer handing back, leave it off for the same reason
|
|
|
448
446
|
**Every `ai-blocked` must say why, and land in front of a human.** So reaping always
|
|
449
447
|
does three things together ā label, assign, comment ā and the comment opens with
|
|
450
448
|
|
|
451
|
-
`š¤ *Automated ā \`ai-issue-loop\` Pass 2 (stall reaping)
|
|
449
|
+
`š¤ *Automated ā \`ai-issue-loop\` Pass 2 (stall reaping).*`
|
|
452
450
|
|
|
453
451
|
then a blank line. State which stall rule fired, how long the label sat, and whether a
|
|
454
452
|
worktree was removed. A bare `ai-blocked` with no explanation is worse than no label:
|
|
@@ -506,20 +504,19 @@ Reviewer prompt template:
|
|
|
506
504
|
> purpose. Also read the repo's `CLAUDE.md` if the diff plausibly touches a rule
|
|
507
505
|
> it states.
|
|
508
506
|
>
|
|
509
|
-
> `<code-reviewer: Judge correctness, obvious bugs, and adherence to the repo's
|
|
510
|
-
>
|
|
511
|
-
>
|
|
512
|
-
>
|
|
507
|
+
> `<code-reviewer: Judge correctness, obvious bugs, and adherence to the repo's stated
|
|
508
|
+
> conventions.>` / `<security-expert: Judge injection risk, leaked secrets, unsafe
|
|
509
|
+
> shell/SQL construction, and dependency or supply-chain changes.>` That is the
|
|
510
|
+
> checklist to run, not an outline to write up.
|
|
513
511
|
>
|
|
514
512
|
> Post your verdict as a comment ā **never** `--approve`, it errors on your own
|
|
515
513
|
> PR:
|
|
516
514
|
> `gh pr review <N> --comment --body "..."`
|
|
517
515
|
>
|
|
518
|
-
> The body **must** begin with this exact header line, then a blank line
|
|
519
|
-
>
|
|
520
|
-
> a human wrote the review:
|
|
516
|
+
> The body **must** begin with this exact header line, then a blank line ā you
|
|
517
|
+
> authenticate as the repo owner, so without it the review reads as a human's:
|
|
521
518
|
>
|
|
522
|
-
> `š¤ *Automated review ā \`<your agent type>\` via ai-issue-loop
|
|
519
|
+
> `š¤ *Automated review ā \`<your agent type>\` via ai-issue-loop.*`
|
|
523
520
|
>
|
|
524
521
|
> The body **must end** with this section, as its last thing:
|
|
525
522
|
>
|
|
@@ -538,13 +535,14 @@ Reviewer prompt template:
|
|
|
538
535
|
> That section is what a human reads at merge time, so put anything you would
|
|
539
536
|
> want them to know there rather than leaving it in the prose above ā a finding
|
|
540
537
|
> buried mid-paragraph does not survive the handoff. For the same reason, **cap
|
|
541
|
-
> the body at that section plus
|
|
542
|
-
>
|
|
543
|
-
>
|
|
544
|
-
>
|
|
545
|
-
>
|
|
546
|
-
>
|
|
547
|
-
>
|
|
538
|
+
> the body at that section plus ā¤600 characters above it**. Verify everything;
|
|
539
|
+
> narrate only where the PR is **wrong** or **silent**. Never list what you
|
|
540
|
+
> checked and found clean, and never confirm a claim the PR body already makes ā
|
|
541
|
+
> agreement is what the pass label is for, so a review that agrees is nearly
|
|
542
|
+
> empty. The bar is a finding that **changes what a human would do**: a semver
|
|
543
|
+
> implication, a deliberate omission, a follow-up that must be filed. Writing
|
|
544
|
+
> `Nothing.` is a real verdict and the common one ā say it plainly rather than
|
|
545
|
+
> padding to look thorough.
|
|
548
546
|
>
|
|
549
547
|
> Then apply exactly one verdict label, **clearing your claim label in the same
|
|
550
548
|
> command**:
|
|
@@ -646,8 +644,8 @@ package/from/to table survives because it sits at the top; classify from that.
|
|
|
646
644
|
> State in your comment which rule fired, name the packages that tripped it, and say
|
|
647
645
|
> whether the body was truncated so the reader knows what you could and couldn't see.
|
|
648
646
|
> Same `š¤ *Automated review ā ā¦*` header line, same closing `### Before merging`
|
|
649
|
-
> section, same
|
|
650
|
-
> above ā **including clearing your
|
|
647
|
+
> section, same ā¤600-character cap and no-negative-findings rule on the body, and same
|
|
648
|
+
> one-verdict-label rule as above ā **including clearing your
|
|
651
649
|
> `<ai-reviewing-code|ai-reviewing-sec>` claim label in the same `gh pr edit`**.
|
|
652
650
|
> Pass 3 claimed you with it before spawning you, and a claim left behind wedges
|
|
653
651
|
> your half of the review until Pass 2 reaps it.
|
|
@@ -682,7 +680,7 @@ gh api "repos/$OWNER_REPO/issues/<N>/timeline" \
|
|
|
682
680
|
```
|
|
683
681
|
|
|
684
682
|
If that count is **ā„ 3**, stop looping. Comment the reason on the PR ā opening with
|
|
685
|
-
`š¤ *Automated ā \`ai-issue-loop\` Pass 3
|
|
683
|
+
`š¤ *Automated ā \`ai-issue-loop\` Pass 3.*`
|
|
686
684
|
and a blank line ā naming what each round changed and why the reviewer kept objecting,
|
|
687
685
|
then:
|
|
688
686
|
|
|
@@ -751,10 +749,9 @@ same issue gets re-triaged from scratch every time, and the reasoning that took
|
|
|
751
749
|
real work to reach is lost.
|
|
752
750
|
|
|
753
751
|
The comment opens with the standard `š¤ *Automated ā¦*` header ā see the top of this
|
|
754
|
-
file
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
whole value is the reasoning; do not reach for this shape on a PR handoff:
|
|
752
|
+
file. Then, in the body ā **this is the one comment exempt from the ā¤10-line
|
|
753
|
+
budget, and only this one.** Declining is a hard handoff whose whole value is the
|
|
754
|
+
reasoning; do not reach for this shape on a PR handoff:
|
|
758
755
|
|
|
759
756
|
- **Why an agent cannot finish it**, concretely. "Not suitable" is useless. Name
|
|
760
757
|
the blocker: binary assets it cannot author, a force-push past branch
|
|
@@ -879,7 +876,7 @@ Then spawn a background implementer agent:
|
|
|
879
876
|
> **must** open with this exact line, then a blank line ā you authenticate as the
|
|
880
877
|
> owner, so without it the issue reads as if they wrote it themselves:
|
|
881
878
|
>
|
|
882
|
-
> `š¤ *Automated ā implementer via ai-issue-loop
|
|
879
|
+
> `š¤ *Automated ā implementer via ai-issue-loop.*`
|
|
883
880
|
>
|
|
884
881
|
> Say what you tried, the exact error, and what a human would need to decide. "Could
|
|
885
882
|
> not finish" with no detail wastes the handoff ā the whole point of the label is that
|