justinmclean opened a new pull request, #532:
URL: https://github.com/apache/airflow-steward/pull/532
## Summary
### What
Adds the `issue-deduplicate` skill, closing the general-issue deduplication
gap identified in triage-mode.md Known Gaps (sequenced behind
issue-stale-sweep,
now shipped).
The skill takes two open `<issue-tracker>` issue numbers, reasons about their
shared root cause, proposes a closing comment and an optional cross-reference
comment, and waits for explicit maintainer confirmation before posting or
closing anything. It mirrors the state-change discipline of
`security-issue-deduplicate` but operates on the public general-issue tracker
with no CVE or privacy-LLM complexity.
### Ships with
- `skills/issue-deduplicate/SKILL.md` (Steps 0 to 4, five golden rules,
prompt-injection detection, age-tiebreak heuristic)
- 9-case eval suite across 3 steps (step-0-preflight, step-2-build-proposal,
step-3-confirm), including an adversarial injection-in-issue-body case
- Relay symlinks in `.agents/`, `.claude/`, `.github/`
- Row in `docs/labels-and-capabilities.md` (capability:resolve, area:issue)
### Testing
- **skill-and-tool-validator**: passes clean, no hard-rule failures and no
advisories on this skill.
- **skill-evals**: 9/9 cases pass via `claude -p` with Haiku field-aware
grading.
## Type of change
- [X] Skill change (`.claude/skills/<name>/`) — eval fixtures updated below
- [ ] Tool / bridge contract (`tools/<system>/*.md`)
- [ ] Python package (`tools/*/` with `pyproject.toml`)
- [ ] Groovy reference impl
- [ ] Cross-cutting (RFC, AGENTS.md, sandbox, privacy-LLM)
- [ ] Documentation (`docs/`, `README.md`, `CONTRIBUTING.md`)
- [ ] Project template (`projects/_template/`)
- [ ] CI / dev loop (`prek`, workflows, validators)
- [ ] Other:
## Test plan
- [X] `prek run --all-files` passes
- [ ] For Python packages touched: `uv run pytest` / `ruff check` / `mypy`
passes
- [ ] For Groovy bridges touched: command-line invocation tested end-to-end
- [X] For skill changes: eval suite passes for the affected skill
(`PYTHONPATH=tools/skill-evals/src python3 -m skill_evals.runner
tools/skill-evals/evals/<skill>/`)
- [ ] For skill *behaviour* changes: a new or updated eval fixture is
included in this PR
(a regression test for the bug fixed / the behaviour added — see
CONTRIBUTING.md)
- [ ] Other:
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]