Skill to debug semantic release issues when successful publication fails#28
Skill to debug semantic release issues when successful publication fails#28jpuzz0 merged 3 commits intopatternfly:mainfrom
Conversation
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
📝 WalkthroughWalkthroughAdds 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
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes 🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
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-listandgit branchcommands).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
📒 Files selected for processing (1)
.cursor/skills/semantic-release-troubleshooting/SKILL.md
- 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>
There was a problem hiding this comment.
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
📒 Files selected for processing (1)
plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md
There was a problem hiding this comment.
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
📒 Files selected for processing (1)
plugins/pf-workflow/skills/semantic-release-troubleshooting/SKILL.md
| | 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) | |
There was a problem hiding this comment.
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.
This minor comment is not necessary.
Add skill to help debug issues when a specific release is not being published.
Summary by CodeRabbit