Skip to content

Use standard section emojis in PR descriptions #548

Description

@williamthorsen

Problem

PR descriptions generated by summarize-change use ## Details subsections (Features, Fixes, Refactoring, Tests, Dependencies) that don't carry the work-type emojis. There's also no convention for surfacing breaking changes prominently. As a result, PR descriptions don't visually align with release notes, and reviewers have no consistent visual cue for breaking changes.

Context

  • This repo's packages/agents/content/skills/_data/work-types.json is the canonical SSOT for the work-type taxonomy (consumed by skill content and downstream changelog/release-notes tooling).
  • The breakingPolicy field on each type covers commit-level marker policy, but there's no SSOT entry for the visual breaking-changes marker (emoji + label).
  • For per-type emoji/label values, @williamthorsen/release-kit's downstream copy carries more mature values that haven't flowed back to the SSOT. Adopt those values into the SSOT to bring the canonical set up to date. Release-kit's downstream copy will then re-sync downstream of the SSOT (out of scope here; tracked separately).
  • Release-kit's release notes tag breaking changes inline (🚨 **Breaking:** ...) rather than collecting them under a dedicated section. PR descriptions adopt the same inline-prefix convention.

Solution

  1. Update work-types.json to adopt the more mature emoji/label values currently in release-kit's bundled copy:
    • drop: 🪦 "Removed"
    • deprecate: 🗑️ "Deprecated"
    • fix: label "Bug fixes" (emoji unchanged)
    • internal: 🏗️ "Internal features"
    • tooling: ⚙️ (label unchanged)
    • ci: 👷 (label unchanged)
    • ai: 🤖 "Agentic support"
    • fmt: 🎨 (label unchanged)
  2. Add a top-level markers block: markers.breaking: { emoji: "🚨", label: "Breaking" }. Label is the bare tag word; punctuation belongs to the rendering template.
  3. Extend work-types.schema.json and work-types-schema.test.ts to validate the new markers block.
  4. Update summarize-change's ## Details template: subsection headers use {emoji} {label} from work-types.json; any individual entry that represents a breaking change is prefixed inline with 🚨 **Breaking:** (rendered via the construction {emoji} **{label}:**, drawn from markers.breaking). The breaking entry stays under its work-type subsection.

Acceptance criteria

  • work-types.json carries the eight updated emoji/label pairs above.
  • work-types.json includes a top-level markers.breaking entry with emoji 🚨 and label "Breaking".
  • Top-level keys in work-types.json are alphabetized (per repo convention; preserve array element order where it carries meaning — tiers precedence and types render-order within tier).
  • work-types.schema.json validates the new markers block.
  • work-types-schema.test.ts covers the markers.breaking validation cases and asserts the SSOT's 🚨 / "Breaking" values directly (downstream-consumer guard).
  • summarize-change's ## Details template renders subsection headers as {emoji} {label} drawn from work-types.json.
  • When a ## Details entry describes a breaking change (commit with ! marker or BREAKING CHANGE: footer), it's prefixed inline with 🚨 **Breaking:** drawn from markers.breaking. The entry stays in its work-type subsection.
  • Skill content that referenced specific subsection labels is updated for consistency, or confirmed unaffected.
  • New and modified behavior in this change is covered by tests.

Metadata

Metadata

Labels

featureAdded or improved external functionalityscope:agents

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions