Skip to content

Commit 82eec9c

Browse files
[agents] Verify issue bodies after GitHub writes (#165) (#169)
* [agents] Verify issue bodies after GitHub writes (#165) * Update wiki submodule pointer for PR #169 --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
1 parent bdf5830 commit 82eec9c

5 files changed

Lines changed: 35 additions & 2 deletions

File tree

.agents/skills/github-issues/SKILL.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ Use this skill for the full Fast Forward issue lifecycle: draft implementation-r
1414
3. Build or revise the issue content with [references/templates.md](references/templates.md) and [references/architectural-criteria.md](references/architectural-criteria.md).
1515
4. Run the content-quality pass in [references/review-checklist.md](references/review-checklist.md).
1616
5. When the user wants a GitHub write, choose the exact mutation in [references/operations.md](references/operations.md) and the metadata rules in [references/metadata.md](references/metadata.md).
17-
6. Re-run the GitHub write checks in [references/review-checklist.md](references/review-checklist.md), then return the issue number, URL, and a short summary of what changed.
17+
6. After create or update mutations, re-read the issue from GitHub and verify that the stored body is the intended issue content rather than a placeholder path, temporary-file reference, or obviously malformed result.
18+
7. Re-run the GitHub write checks in [references/review-checklist.md](references/review-checklist.md), then return the issue number, URL, and a short summary of what changed.
1819

1920
## Output Contract
2021

@@ -25,11 +26,13 @@ Use this skill for the full Fast Forward issue lifecycle: draft implementation-r
2526
- Add explicit non-goals when the prompt could expand into multiple initiatives.
2627
- Ask follow-up questions only when a missing fact would materially change the issue type, acceptance criteria, or target issue. Otherwise make the smallest safe assumption and state it briefly.
2728
- When publishing or updating an issue, explicitly state which metadata was applied or intentionally omitted: issue type, labels, milestone, project assignment, project field values, and related open issues.
29+
- Treat a GitHub create or update as incomplete until the issue has been re-read successfully and the stored body has been sanity-checked.
2830

2931
## Fast Forward Defaults
3032

3133
- Prefer the current repository checkout when the user asks about "this repo" or "this project".
3234
- Use `gh api` for GitHub write operations.
35+
- After issue create and update writes, prefer `gh issue view --json body` or an equivalent GitHub readback to verify the stored issue body before reporting success.
3336
- Prefer issue types over labels for primary categorization when the organization supports them.
3437
- Reuse only issue types, labels, milestones, projects, and project field options that already exist in the target repository or organization.
3538
- Prefer filling the maximum useful metadata that can be inferred safely from the issue scope and the available GitHub configuration.
@@ -65,5 +68,6 @@ Use this skill for the full Fast Forward issue lifecycle: draft implementation-r
6568
- Do not force the code-isolation block onto documentation-only work.
6669
- Do not ask exploratory questions when repository conventions already provide a safe default.
6770
- Do not publish a placeholder issue body or mutate GitHub without restating the target issue first.
71+
- Do not report a create or update as successful before re-reading the issue body from GitHub and confirming it is not a temporary file path, placeholder token, or malformed partial payload.
6872
- Do not split drafting and publication into separate local skills when this workflow already covers both.
6973
- Do not invent labels, issue types, milestones, projects, project field values, or issue links that are not already supported by the target repository context.

.agents/skills/github-issues/references/operations.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ Add metadata flags only when needed:
2424
After creation, apply project assignment, project field values, or issue links
2525
through follow-up mutations when the repository context supports them.
2626

27+
Then verify the stored issue body:
28+
29+
```bash
30+
gh issue view {number} --json number,body,url
31+
```
32+
33+
The returned body should still contain the intended Markdown content. Treat the
34+
write as failed if the stored body collapses into a temporary path such as
35+
`@/tmp/...`, a placeholder token, or another obviously malformed result.
36+
2737
## Update Issue
2838

2939
```bash
@@ -36,6 +46,16 @@ gh api repos/{owner}/{repo}/issues/{number} \
3646

3747
Only include the fields that should change.
3848

49+
Then verify the stored issue body:
50+
51+
```bash
52+
gh issue view {number} --json number,body,url
53+
```
54+
55+
The returned body should match the intended update. If the readback shows a
56+
temporary file reference, placeholder path, or another malformed payload,
57+
correct the issue before reporting success.
58+
3959
## Add Issue to an Existing Project
4060

4161
```bash
@@ -95,5 +115,7 @@ gh api repos/{owner}/{repo}/issues/{number} \
95115
- Use comments for incremental updates that should preserve the issue description.
96116
- For new issues, prefer applying metadata immediately after creation so the
97117
issue lands in GitHub with a complete and reviewable state.
118+
- After create or update writes, always re-read the issue body from GitHub
119+
before reporting success.
98120
- For backfill passes, update only missing metadata by default and avoid
99121
rewriting fields that already carry intentional values.

.agents/skills/github-issues/references/review-checklist.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ Use this checklist before finalizing issue content or mutating GitHub.
3131
user explicitly asked for metadata correction.
3232
- Project or milestone fields were left empty only for a clear reason, not by omission.
3333
- A duplicate issue is not being created accidentally.
34+
- After create or update writes, the issue was re-read from GitHub and the
35+
stored body was checked for temporary file paths, placeholder tokens, or
36+
other malformed content.
3437
- The final response will include the issue number and URL.
3538

3639
## Stop Conditions

.github/wiki

Submodule wiki updated from fd5e4ae to af0d173

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Changed
11+
12+
- Require GitHub issue write readback verification in the github-issues skill (#165)
13+
1014
## [1.18.0] - 2026-04-23
1115

1216
### Changed

0 commit comments

Comments
 (0)