fix(skills): grant the -C form and stop routing the root through a va… - #256
Merged
Conversation
…riable Pinning `git -C` deadened every permission grant in this skill's own frontmatter. Bash rules match on command prefix, so `git -C <root> status --short` does not begin with `git status`, and the six `Bash(git …:*)` entries stopped matching the moment the pin landed — every state-gathering command now prompts. Adds `Bash(git -C:*)`, plus the commands the body actually prescribes and the earlier list omitted: show, rebase, checkout, reset, rev-list for the squash and verification flows, cp for fixup scoping, and ./doit.sh for the per-commit checks. `python3` and `sed` stay unlisted on purpose. Both appear in the body, but pre-approving arbitrary code execution for the whole turn is a bad trade in a commit skill; the prompt is proportionate friction. Resolving the root from the skill's base dir is right — a literal breaks under worktrees — but carrying it in `ROOT=` is not: shell state does not persist between tool calls, and three independent read commands are exactly what gets split into parallel calls. `$ROOT` is then empty and `git -C ""` falls back to the drifted cwd, reinstating the bug the pin exists to prevent while looking defended against it. The resolved path is now substituted into each command directly.
Contributor
|
Queued — the merge queue status continues in this comment ↓. |
Contributor
Merge Queue Status
This pull request spent 3 minutes 49 seconds in the queue, including 3 minutes 33 seconds running CI. Waiting for
All conditions
ReasonThe merge conditions cannot be satisfied due to failing checks
Failing checks: HintYou may have to fix your CI before adding the pull request to the queue again. Requeued — the merge queue status continues in this comment ↓. |
3 tasks
Contributor
Merge Queue Status
This pull request spent 3 minutes 29 seconds in the queue, including 3 minutes 9 seconds running CI. Required conditions to merge
|
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…riable
Pinning
git -Cdeadened every permission grant in this skill's own frontmatter. Bash rules match on command prefix, sogit -C <root> status --shortdoes not begin withgit status, and the sixBash(git …:*)entries stopped matching the moment the pin landed — every state-gathering command now prompts. AddsBash(git -C:*), plus the commands the body actually prescribes and the earlier list omitted: show, rebase, checkout, reset, rev-list for the squash and verification flows, cp for fixup scoping, and ./doit.sh for the per-commit checks.python3andsedstay unlisted on purpose. Both appear in the body, but pre-approving arbitrary code execution for the whole turn is a bad trade in a commit skill; the prompt is proportionate friction.Resolving the root from the skill's base dir is right — a literal breaks under worktrees — but carrying it in
ROOT=is not: shell state does not persist between tool calls, and three independent read commands are exactly what gets split into parallel calls.$ROOTis then empty andgit -C ""falls back to the drifted cwd, reinstating the bug the pin exists to prevent while looking defended against it. The resolved path is now substituted into each command directly.