Skip to content

feat(compound-engineering): assign the most relevant existing label when creating a tracker issue#736

Merged
pekral merged 1 commit into
masterfrom
feat/issue-label-assignment
Jul 16, 2026
Merged

feat(compound-engineering): assign the most relevant existing label when creating a tracker issue#736
pekral merged 1 commit into
masterfrom
feat/issue-label-assignment

Conversation

@pekral

@pekral pekral commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds a shared normative contract — assign the most relevant existing label when creating a tracker issue — as a new canonical section in rules/compound-engineering/general.mdc, right after Claim a tracker issue before working on it.
  • Mechanism: enumerate existing labels (gh label list --json name,description on GitHub), match by type + domain, never invent a new label and never fall back to a random/first-available one; when nothing genuinely fits, create the issue unlabelled. EPIC (owned by create-issues-from-text) stays the sole sanctioned exception. JIRA is documented as a secondary path (free-text labels, acli limits); Bugsnag is explicitly out of scope.
  • Thin one-line references added to the four issue-creating skills: skills/create-issue/SKILL.md, skills/create-issues-from-text/SKILL.md, skills/blueprint/SKILL.md, skills/product-capability/SKILL.md. No agent files touched.
  • Content-pin tests added: tests/Installer/CompoundEngineeringContentTest.php (section heading, gh label list, no-random-label wording, EPIC exception) and tests/Installer/SkillsContentTest.php (byte-identical reference sentence per skill).
  • CHANGELOG.md — one feat line under [Unreleased].

Closes #734

Test plan

  • composer build green (328 tests, 100% coverage, phpcs/phpstan/skill-check all pass)
  • Existing gh label create EPIC pin in tests/Installer/AgentsTest.php (lines 279-297) untouched and still passing
  • README skill count unaffected (no new skill directory added)

@pekral

pekral commented Jul 15, 2026

Copy link
Copy Markdown
Owner Author

Code Review

Status: clean
Counts: Critical 0 · Moderate 0 · Minor 2 · Refactoring 0
Last updated: 2026-07-15T11:33:40Z
Issue tracker summary: posted summary to issue #734


Findings

Consolidated review — quality / architecture / optimisation (argos) + security (athena). Both Minor items are prose-hardening suggestions on the same GitHub mechanics clause; neither blocks convergence (0 Critical · 0 Moderate).

🟡 Minor 1. Instruct passing the label name as a discrete CLI argument (shell-injection hardening)

  • Location: rules/compound-engineering/general.mdcAssign the most relevant existing label when creating a tracker issue → GitHub mechanics
  • Note: A GitHub label name may contain shell metacharacters (spaces, ", backtick, ;, $()). The gh issue create ... --label "<name>" guidance should state that the agent must pass the label name as a discrete argument and never interpolate it into an sh -c command string. Reading via --json name,description is safe; the residual surface is only the create command assembly. Source: athena security review.

🟡 Minor 2. Note that label name / description are untrusted data (indirect prompt-injection hardening)

  • Location: rules/compound-engineering/general.mdc — same GitHub mechanics clause
  • Note: gh label list --json name,description returns description, which a repo collaborator can influence, and the prose feeds it into the agent's decision context ("match by type + domain"). Blast radius is bounded (label choice only; the action is fenced to select-existing / create-unlabelled). A one-line note that name / description values are untrusted — used only to name the label, never as instructions — closes the gap. Source: athena security review.

Summary: 0 Critical · 0 Moderate · 2 Minor · 0 Refactoring · assignment conformance: conformant · posted summary to issue #734 · reviewer comments: none

@pekral
pekral marked this pull request as ready for review July 15, 2026 11:34
@pekral
pekral merged commit 78e7355 into master Jul 16, 2026
1 check passed
@pekral
pekral deleted the feat/issue-label-assignment branch July 16, 2026 08:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FEAT | Issues tags

1 participant