agent-afk 3.89.7 → 3.89.8

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.
@@ -58,17 +58,17 @@ Read the cumulative diff: `git diff --stat origin/<default>...HEAD` + full `git
58
58
  Before committing, review the **file list** to stage — don't sweep in untracked config/scratch/secret files. Print the draft message + file list to the user as info-only output, then **immediately** invoke Phase 4. **This is not a gate. Do not ask "does this look good?" Do not wait for approval.** The user surface is one continuous turn: draft → commit → push → PR URL.
59
59
 
60
60
  **Phase 4 — Commit.**
61
- Stage only the confirmed files. Commit via HEREDOC to preserve formatting:
61
+ Stage only the confirmed files, then write the commit message to a temp file with your file-writing tool — **NOT** a shell heredoc — and commit with `-F`:
62
62
 
63
63
  ```
64
- git commit -m "$(cat <<'EOF'
65
- <subject>
66
-
67
- <body>
68
- EOF
69
- )"
64
+ # 1. Write the subject + body to a temp file (e.g. .git/COMMIT_BODY.txt) using
65
+ # your file-writing tool. The content never passes through the shell.
66
+ # 2. Commit from that file:
67
+ git commit -F .git/COMMIT_BODY.txt
70
68
  ```
71
69
 
70
+ Going through a file keeps backticks, `$(...)`, and quotes in the message literal. **Never** assemble the message inline as `git commit -m "$(cat <<'EOF' … EOF)"` — a backtick or `$(` in the body is parsed by the shell *before* `git` runs, so the commit fails or records a mangled message. `.git/` is never staged, so the temp file can't sneak into the commit (in a linked worktree `.git` is a file, not a dir — write to the path printed by `git rev-parse --git-dir` instead).
71
+
72
72
  Never `--amend` (creates a new commit each time). Never bypass hooks (`--no-verify`).
73
73
 
74
74
  **Phase 5 — Push.**
@@ -108,17 +108,21 @@ Structure:
108
108
  ```
109
109
 
110
110
  **Phase 8 — Open PR.**
111
+ Write the PR body (from Phase 7) to a temp file with your file-writing tool — **NOT** a shell heredoc — then pass it with `--body-file`:
112
+
111
113
  ```
114
+ # 1. Write the Phase 7 PR body to a temp file (e.g. .git/PR_BODY.md) using your
115
+ # file-writing tool. The body never passes through the shell.
116
+ # 2. Open the PR from that file:
112
117
  gh pr create \
113
118
  --title "<subject line of the commit>" \
114
- --body "$(cat <<'EOF'
115
- <PR body from Phase 7>
116
- EOF
117
- )" \
119
+ --body-file .git/PR_BODY.md \
118
120
  --base <default-branch> \
119
121
  [--draft]
120
122
  ```
121
123
 
124
+ PR bodies are markdown: they routinely carry backticks (inline code), `$(...)`, and quotes. **Never** inline the body as `--body "$(cat <<'EOF' … EOF)"` — the shell parses backticks/`$(` inside the command substitution before `gh` ever runs, so the call fails (or worse, opens the PR with a truncated/garbled body and you don't notice). `--body-file` reads the file verbatim: no shell quoting, no escaping. Only `--title` stays inline — keep it a single plain line with no backticks.
125
+
122
126
  Return the PR URL to the user. Done.
123
127
 
124
128
  ---