Skip to content

Skill to debug semantic release issues when successful publication fails#28

Merged
jpuzz0 merged 3 commits intopatternfly:mainfrom
dlabaj:semantic-release
Apr 17, 2026
Merged

Skill to debug semantic release issues when successful publication fails#28
jpuzz0 merged 3 commits intopatternfly:mainfrom
dlabaj:semantic-release

Conversation

@dlabaj
Copy link
Copy Markdown
Contributor

@dlabaj dlabaj commented Mar 19, 2026

Add skill to help debug issues when a specific release is not being published.

Summary by CodeRabbit

  • Documentation
    • Added a comprehensive troubleshooting guide for semantic-release failures, including symptom identification tables and step-by-step remediation for permission issues, commit message compliance, tag conflicts, and recovery after history rewrites.

@patternfly patternfly deleted a comment from coderabbitai bot Apr 2, 2026
@patternfly patternfly deleted a comment from coderabbitai bot Apr 2, 2026
@patternfly patternfly deleted a comment from coderabbitai bot Apr 2, 2026
@patternfly patternfly deleted a comment from coderabbitai bot Apr 2, 2026
@patternfly patternfly deleted a comment from coderabbitai bot Apr 2, 2026
@jpuzz0
Copy link
Copy Markdown
Collaborator

jpuzz0 commented Apr 2, 2026

@coderabbitai full review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 2, 2026

✅ Actions performed

Full review triggered.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 2, 2026

📝 Walkthrough

Walkthrough

Adds a new diagnostic skill document for troubleshooting semantic-release failures, mapping observed symptoms (npm 403, skipped releases, tag conflicts, history rewrites) to step-by-step diagnosis and remediation commands for npm auth, commit message fixes, tag resolution, and tag/note recovery after force-pushes.

Changes

Cohort / File(s) Summary
Semantic Release Troubleshooting Documentation
plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md
New Markdown skill describing a symptom-selection table and detailed troubleshooting sections covering npm 403/auth issues, skipped releases from non-compliant or squashed commit messages, tag push conflicts ("reference already exists"), and recovery after git push --force (orphaned tags/notes and tag re-creation).

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and clearly describes the main change: a new skill document for debugging semantic-release issues when publication fails, which matches the added SKILL.md file.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
.cursor/skills/semantic-release-troubleshooting/SKILL.md (1)

10-93: Consider shifting from step-by-step commands to outcome-focused guidance.

The skill currently provides explicit shell commands for each troubleshooting scenario. Based on learnings, skills should describe what to accomplish rather than prescriptive implementation steps — the AI already knows how to use git, npm, etc.

Consider reframing sections to state desired outcomes (e.g., "Verify the tag exists and identify which branches contain it" instead of showing exact git rev-list and git branch commands).

Based on learnings: "Describe outcomes, not implementation in skills — tell the AI what to accomplish, not how to do it. The AI already knows how to use git, gh, grep, etc."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/semantic-release-troubleshooting/SKILL.md around lines 10 -
93, The content is too prescriptive: in sections "2. Permission Error", "3.
Squashed Commits", "4. Tag Conflict (`reference already exists`)" and "5.
History Rewrite Recovery" replace explicit shell commands with outcome-focused
guidance — state the verification goals (e.g., "confirm whether a tag exists and
which branches contain it", "ensure package name/ownership and registry auth are
valid", "ensure commit messages follow conventional-commits", "recover
tags/notes so they point at the intended commit") and list the expected results
and next high-level actions (delete or recreate tag/notes, update package name
or permissions, rewrite commit message) rather than showing exact git/npm
commands; keep one short example only if absolutely necessary and retain the
existing section headings to locate where to edit.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.cursor/skills/semantic-release-troubleshooting/SKILL.md:
- Line 35: Update the two outdated npm docs links in the SKILL.md "Fix:" line:
replace the scope URL `https://docs.npmjs.com/misc/scope` with a current scope
doc such as `https://docs.npmjs.com/cli/v11/using-npm/scope/` (or
`https://docs.npmjs.com/about-scopes/`), and replace the team URL
`https://docs.npmjs.com/cli/team` with
`https://docs.npmjs.com/cli/v8/commands/npm-team/` so the "Fix:" sentence points
to valid, up-to-date npm documentation.
- Around line 70-74: Replace the incorrect git push usage in the "Delete the
orphaned tags" step where the command currently shows `git push origin -d :<TAG
NAME>`; use a valid single-syntax form instead — either the modern form `git
push origin -d <TAG NAME>` (recommended) or the older refspec form `git push
origin :<TAG NAME>` — and update the example and explanatory text accordingly so
the snippet no longer mixes `-d` with the colon refspec.

---

Nitpick comments:
In @.cursor/skills/semantic-release-troubleshooting/SKILL.md:
- Around line 10-93: The content is too prescriptive: in sections "2. Permission
Error", "3. Squashed Commits", "4. Tag Conflict (`reference already exists`)"
and "5. History Rewrite Recovery" replace explicit shell commands with
outcome-focused guidance — state the verification goals (e.g., "confirm whether
a tag exists and which branches contain it", "ensure package name/ownership and
registry auth are valid", "ensure commit messages follow conventional-commits",
"recover tags/notes so they point at the intended commit") and list the expected
results and next high-level actions (delete or recreate tag/notes, update
package name or permissions, rewrite commit message) rather than showing exact
git/npm commands; keep one short example only if absolutely necessary and retain
the existing section headings to locate where to edit.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 784d3f09-41a8-4ea3-8fc5-fd1b9d025c25

📥 Commits

Reviewing files that changed from the base of the PR and between 0e20625 and c1e217e.

📒 Files selected for processing (1)
  • .cursor/skills/semantic-release-troubleshooting/SKILL.md

Comment thread .cursor/skills/semantic-release-troubleshooting/SKILL.md Outdated
Comment thread plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md Outdated
- Move skill to plugins/pf-workflow/skills/ directory
- Update npm documentation links to current URLs
- Fix git push syntax for deleting remote tags

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Comment thread plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md Outdated
@patternfly patternfly deleted a comment from coderabbitai bot Apr 17, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md`:
- Around line 1-8: The SKILL.md frontmatter is missing the required flag for
destructive git operations; update the YAML frontmatter at the top of the
semantic-release-troubleshooting skill to include disable-model-invocation: true
so the skill cannot be executed by models (i.e., add the
disable-model-invocation: true key to the existing frontmatter block that
contains name and description).
- Around line 25-93: Rewrite the listed procedural command sequences into
outcome-focused guidance: for each heading (## 2. Permission Error, ## 3.
Squashed Commits, ## 4. Tag Conflict (`reference already exists`), ## 5. History
Rewrite Recovery) replace the explicit shell commands and step-by-step how-to
with concise "Diagnosis" and "Fix" statements that describe the desired outcomes
(e.g., "Verify package name availability on the npm registry; if taken, change
package.json or use a scope" for Permission Error; "Ensure commit messages
follow semantic-release conventions; rewrite the squashed commit message to a
compliant format" for Squashed Commits; "Explain how to detect a conflicting tag
and either merge the release commits or remove the tag and recreate it" for Tag
Conflict; and "Describe the recovery goals after a history rewrite: remove
orphaned tags/notes, recreate tags/notes on new commits, and push updated refs"
for History Rewrite Recovery), remove all concrete command examples, and keep
referenced resources/links intact.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: eba3a0c4-a1a0-45a4-be65-272686f3bacd

📥 Commits

Reviewing files that changed from the base of the PR and between c1e217e and e441deb.

📒 Files selected for processing (1)
  • plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md

Comment thread plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md Outdated
coderabbitai[bot]
coderabbitai bot previously requested changes Apr 17, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md`:
- Around line 19-24: The in-page links in the scenario table (the fragments
currently pointing to "#permission-error", "#squashed-commits", "#tag-conflict",
and "#history-rewrite-recovery") do not match the generated heading IDs; update
each table link to the actual heading slug used by the renderer by inspecting
the corresponding section headings (e.g., the heading text for the "You do not
have permission to publish (403)" row, the "Release skipped; commits not
counted" row, the "reference already exists" tag conflict row, and the "Release
not found after `git push --force`" row) and replace the fragment identifiers so
they exactly match those generated IDs. Ensure each table entry's link target
matches the heading slug (case, hyphens, and punctuation rules) so navigation
works.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 61926564-8c9f-46d9-9c0b-b4976a1e4a46

📥 Commits

Reviewing files that changed from the base of the PR and between e441deb and 5df9b43.

📒 Files selected for processing (1)
  • plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md

Comment on lines +19 to +24
| Symptom | Section |
|---------|---------|
| `You do not have permission to publish` (403) | → [Permission error](#permission-error) |
| Release skipped; commits not counted | → [Squashed commits](#squashed-commits) |
| `reference already exists` when pushing tag | → [Tag conflict](#tag-conflict) |
| Release not found after `git push --force` | → [History rewrite recovery](#history-rewrite-recovery) |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix broken in-page section links in the scenario table.

The fragment links don’t match the numbered section headings, so table navigation can fail. Update links to the actual generated heading IDs.

🔧 Proposed fix
-| `You do not have permission to publish` (403) | → [Permission error](`#permission-error`) |
-| Release skipped; commits not counted | → [Squashed commits](`#squashed-commits`) |
-| `reference already exists` when pushing tag | → [Tag conflict](`#tag-conflict`) |
-| Release not found after `git push --force` | → [History rewrite recovery](`#history-rewrite-recovery`) |
+| `You do not have permission to publish` (403) | → [Permission error](`#2-permission-error`) |
+| Release skipped; commits not counted | → [Squashed commits](`#3-squashed-commits`) |
+| `reference already exists` when pushing tag | → [Tag conflict](`#4-tag-conflict-reference-already-exists`) |
+| Release not found after `git push --force` | → [History rewrite recovery](`#5-history-rewrite-recovery-after-git-push---force`) |
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 21-21: Link fragments should be valid

(MD051, link-fragments)


[warning] 22-22: Link fragments should be valid

(MD051, link-fragments)


[warning] 23-23: Link fragments should be valid

(MD051, link-fragments)


[warning] 24-24: Link fragments should be valid

(MD051, link-fragments)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md` around
lines 19 - 24, The in-page links in the scenario table (the fragments currently
pointing to "#permission-error", "#squashed-commits", "#tag-conflict", and
"#history-rewrite-recovery") do not match the generated heading IDs; update each
table link to the actual heading slug used by the renderer by inspecting the
corresponding section headings (e.g., the heading text for the "You do not have
permission to publish (403)" row, the "Release skipped; commits not counted"
row, the "reference already exists" tag conflict row, and the "Release not found
after `git push --force`" row) and replace the fragment identifiers so they
exactly match those generated IDs. Ensure each table entry's link target matches
the heading slug (case, hyphens, and punctuation rules) so navigation works.

Copy link
Copy Markdown
Collaborator

@jpuzz0 jpuzz0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jpuzz0 jpuzz0 dismissed coderabbitai[bot]’s stale review April 17, 2026 17:36

This minor comment is not necessary.

@jpuzz0 jpuzz0 merged commit 8165261 into patternfly:main Apr 17, 2026
1 check passed
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.

2 participants