Commit db28862
running-in-ci: skill-edit recipe should use worktree under $TMPDIR (#328)
## Summary
Update the `running-in-ci` "How to propose" recipe so a bot updating
`.claude/skills/` can actually write to disk. The current recipe (`cd
.claude && mv /tmp/... SKILL.md`) satisfies the Claude Code harness
write-guard
([anthropics/claude-code#37157](anthropics/claude-code#37157))
but fails the read-only bind-mount the sandbox places on `.claude/`.
Mirror the pattern `review-runs` already documents: do the edit, commit,
and push from a git worktree under `$TMPDIR`. Both restrictions are now
explained inline so a future reader knows why the worktree is mandatory.
## Why
`worktrunk-bot` hit this in worktrunk run
[24926120125](https://github.com/max-sixty/worktrunk/actions/runs/24926120125)
(a `tend-mention` session triggered by an explicit maintainer
instruction to update repo skill guidance). The bot followed the bundled
recipe, hit `mv: ... Read-only file system`, retried with `cp` (same
error), retried with `touch` (same error), then ad-libbed `git
hash-object -w` plus `git update-index --cacheinfo` to write the blob
and stage it directly to the index — a workaround that left the working
tree showing the file as modified after the fact. ~7 wasted bash cycles
before producing [worktrunk PR
#2415](max-sixty/worktrunk#2415).
`worktrunk-bot` followed the new bundled-skill-defect flow (introduced
in #324 yesterday) and opened permission-request issue
[max-sixty/worktrunk#2416](max-sixty/worktrunk#2416)
on the consumer side. This PR is the corresponding tend-side fix
surfaced by `review-reviewers` rather than waiting on the permission
round-trip — the diagnosis is unambiguous and the fix is small.
## What changes
The "Draft a minimal edit" step (step 3 of "How to propose"):
- Drops the `cd .claude && mv /tmp/... SKILL.md` recipe that fails on
the read-only mount.
- Adds the same prose `review-runs` already carries explaining (a) the
read-only bind-mount of `.claude/` and (b) the harness write-guard from
claude-code#37157, so a reader sees both barriers and why a worktree
clears both.
- Replaces the recipe with the `git worktree add "$TMPDIR/skill-fix"`
pattern, parameterised on `<topic>-$GITHUB_RUN_ID` for the branch name.
- Keeps the existing TODO referencing claude-code#37157.
The frontmatter snippet is moved up so the recipe sits at the bottom of
step 3 with no interleaving.
## Test plan
- [x] Eaten own dogfood: this PR's branch was authored from a worktree
at `$TMPDIR/skill-fix` using exactly the recipe being landed; commit and
push worked end-to-end. Worktree under `$TMPDIR` is writable, no
`Read-only file system` errors.
- [ ] CI on this PR passes (actionlint, ruff, typos, uv-lock).
- [ ] Visual diff vs `review-runs` SKILL.md prose to confirm the two
skills now agree on the recipe shape.
Independent of [#327](#327)
(different concern in the same file: external-tool verification, lines
~498 — no overlap with this edit at lines ~568).
---------
Co-authored-by: continuous-bot <269947486+continuous-bot@users.noreply.github.com>
Co-authored-by: tend-agent <270458913+tend-agent@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>1 parent 586940b commit db28862
1 file changed
Lines changed: 35 additions & 16 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
614 | 614 | | |
615 | 615 | | |
616 | 616 | | |
617 | | - | |
618 | | - | |
619 | | - | |
620 | | - | |
621 | | - | |
622 | | - | |
623 | | - | |
624 | | - | |
625 | | - | |
626 | | - | |
627 | | - | |
628 | | - | |
629 | | - | |
630 | | - | |
631 | | - | |
632 | | - | |
| 617 | + | |
633 | 618 | | |
634 | 619 | | |
635 | 620 | | |
636 | 621 | | |
637 | 622 | | |
638 | 623 | | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
639 | 658 | | |
640 | 659 | | |
641 | 660 | | |
| |||
0 commit comments