ワンクリックで
security-fix
Triage and fix a GitHub security audit issue — validate, test, fix, commit, review
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Triage and fix a GitHub security audit issue — validate, test, fix, commit, review
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
One tick of a CI watchdog — check main-branch GHA status; spawn an agent to fix if failing and no investigation is in flight.
One tick of the henyey mainnet monitor — checks, metrics scan, deploy, status report
Continuous always-on orchestrator for the henyey project pipeline. Each pass queries the board, central-picks up to N actionable issues by priority, and fans out parallel foreground specialist sub-agents (triage/plan/do/review-pr) with the right Claude model per stage. Owns concurrency, conflict-avoidance, CI pipelining, sibling-nit consolidation, and a self-reflection pass that files pipeline-improvement issues. Replaces scripts/project-tick-loop.sh. Use when the operator asks to "run the loop", "process the board continuously", or "keep the pipeline going".
Single-pick dispatcher primitive for the henyey project pipeline. One tick = pick one actionable issue from the project board and dispatch the right specialist sub-agent for its current state. Used for manual single picks and `--issue=` recovery; the continuous orchestrator is `/project-loop`, which owns concurrency centrally. Use when the user asks to "run a tick", "pick up an issue", or "process one board item".
Run two parallel adversarial PR reviewers and combine their verdicts with external PR reviews (GH Copilot bot, humans, other bots) and CI state into a merge decision. Agent reviewers post structured comment verdicts (since the agent is the PR author and cannot self-approve via GH native review). External CHANGES_REQUESTED reviews block merge identically to agent CHANGES_REQUESTED. Operates on issues in `in-review`. Auto-merges with --admin on all-green (after filing follow-up issues for unaddressed inline review comments, so non-critical feedback is preserved as backlog instead of dropped); bounces to `ready-for-doing` on any request-changes or CI red; blocks after 3 bounce-backs on the same code state. At the lifetime cap (6 bounces since last `## Review: Reset`) the PR enters **force-converge mode**: if CI is green, the PR auto-merges and unresolved reviewer concerns become follow-up issues; only red/pending CI at the cap still blocks. Use when invoked by /project-tick with an issue in in-review, or manuall
Audit a Rust crate's adherence to its Stellar protocol spec (spec-driven, walks every normative claim)
SOC 職業分類に基づく
| name | security-fix |
| description | Triage and fix a GitHub security audit issue — validate, test, fix, commit, review |
| argument-hint | <issue-number-or-url> |
Parse $ARGUMENTS:
$ISSUE with it.Triage a security audit issue, validate whether it is a real finding, and if
so: write a failing regression test, fix the code, commit, push, close the
issue, and invoke /review-fix on the commit.
Use this table to find the upstream stellar-core directory for each crate.
| Crate | Upstream Directory |
|---|---|
crates/tx | stellar-core/src/transactions/ |
crates/scp | stellar-core/src/scp/ |
crates/db | stellar-core/src/database/ |
crates/common | stellar-core/src/util/ |
crates/crypto | stellar-core/src/crypto/ |
crates/ledger | stellar-core/src/ledger/ |
crates/bucket | stellar-core/src/bucket/ |
crates/herder | stellar-core/src/herder/ |
crates/overlay | stellar-core/src/overlay/ |
crates/history | stellar-core/src/history/ |
crates/historywork | stellar-core/src/historywork/ |
crates/work | stellar-core/src/work/ |
crates/app | stellar-core/src/main/ |
crates/henyey | stellar-core/src/main/ (CLI subset) |
Run:
gh issue view $ISSUE --json title,body,labels,state,comments,number
Extract from the issue body:
[AUDIT-xxx] prefix in the titleIf the issue is already closed, stop and report: "Issue $ISSUE is already closed."
If the issue has no [AUDIT- prefix in the title, stop and report: "Issue
$ISSUE does not appear to be a security audit issue."
You are about to invest real time in this issue. Signal that it is in progress by assigning yourself now, before validation and code work (Step 2 onward).
Run:
gh issue edit $ISSUE --add-assignee @me
Read the linked audit report if one is referenced (e.g.,
reports/audit/overlay__auth.rs.md).
Read all files mentioned in the issue's Location section. Read enough surrounding context to understand the code — callers, callees, types, and related modules.
If the affected code is in a parity-sensitive crate (any crate that touches
consensus, ledger state, protocol logic, SCP, herder, overlay auth, bucket,
or transaction execution), always read the corresponding stellar-core
code. Use the Crate-to-Upstream Mapping above to find the right directory.
Read the upstream .h file first for API surface, then the relevant .cpp
sections.
Determine whether the finding is real by evaluating:
git log --oneline -- <affected-files> for recent changes.Classify the finding as one of:
Close the issue with a comment explaining exactly why it is not a real issue. The comment must:
file:line that contradicts the findingFormat:
## Assessment: False Positive
This finding is not a real issue because:
<explanation with file:line references>
### Actual Behavior
<what the code actually does>
### Why This Is Safe
<specific guards, checks, or design properties that prevent the issue>
Closing as false positive.
Run:
gh issue close $ISSUE --comment "$(cat <<'EOF'
<comment body>
EOF
)"
Stop here. Do not proceed to Steps 4-6.
Close the issue with a comment citing the fix:
## Assessment: Already Fixed
This issue was addressed in commit <hash>:
<brief description of what the commit changed>
Closing as already fixed.
Stop here. Do not proceed to Steps 4-6.
Per AGENTS.md: "When investigating a bug, always start by writing a narrow unit test that reproduces the bug and fails. Then fix the code until the test passes. Do not skip the failing-test-first step."
#[cfg(test)] mod tests { } at the bottom of the affected
source file.crates/<crate>/tests/ when the test requires
multi-module setup.Write the minimal test that demonstrates the vulnerability:
test_<audit_id_lowercase>_<brief_description>
Example: test_audit_c1_mac_bypass_rejectedFor determinism issues: assert that the output is identical across multiple runs or with different internal orderings.
For integer overflow: assert that the operation returns an error or saturates instead of wrapping.
For authentication bypass: assert that the unauthorized operation is rejected.
For silent fallbacks: assert that the code panics or errors instead of silently degrading.
Run:
cargo test -p <crate> -- <test_name>
The test must fail. This proves the bug exists and the test is meaningful.
If the test passes:
If writing a test is genuinely impossible (e.g., the issue is about a race condition that cannot be deterministically triggered in a unit test), document why in a code comment at the test site, write the best approximation you can, and proceed.
Implement the fix. Use these sources to guide the implementation:
rs-stellar-xdr over custom types.After implementing the fix, run these commands in order:
cargo test -p <crate> -- <test_name> — regression test must now passcargo test -p <crate> — no other tests brokencargo clippy -p <crate> — no warnings introducedcargo test --all — full workspace passesIf any step fails, fix the issue before proceeding. If the fix causes failures in other tests, those tests may have been relying on the buggy behavior — fix them to expect the correct behavior.
Stage and commit:
git add -A
git commit -m "Fix [AUDIT-<ID>]: <short description>" -m "" -m "Co-authored-by: GitHub Copilot <copilot@github.com>"
The commit message should be short, imperative, sentence case. Examples:
Fix [AUDIT-C1]: Gate MAC verification on receiver auth stateFix [AUDIT-M1]: Replace HashSet with BTreeSet for deterministic iterationFix [AUDIT-H5]: Add overflow checks to fee computationPush immediately per AGENTS.md:
git push
If push is rejected, pull with rebase and retry:
git pull --rebase && git push
Close the issue with a comment linking the fix:
gh issue close $ISSUE --comment "$(cat <<'EOF'
## Fixed
Fixed in commit <full-hash>.
### Changes
- <bullet summary of what changed>
### Regression Test
- `<test_name>` in `<file_path>` — verifies <what the test checks>
EOF
)"
Invoke the /review-fix skill on the commit to check for similar issues and
apply any that are found:
/review-fix <commit-hash> --apply
This handles:
file:line for every claim in validation comments.explore type.