Skip to content

Convert sprint-status workflow to native skill packaging#1945

Merged
alexeyv merged 2 commits intomainfrom
convert-sprint-status-skill
Mar 14, 2026
Merged

Convert sprint-status workflow to native skill packaging#1945
alexeyv merged 2 commits intomainfrom
convert-sprint-status-skill

Conversation

@alexeyv
Copy link
Copy Markdown
Collaborator

@alexeyv alexeyv commented Mar 12, 2026

Summary

  • convert src/bmm/workflows/4-implementation/sprint-status into native skill directory src/bmm/workflows/4-implementation/bmad-sprint-status
  • set packaging to type: skill and add SKILL.md
  • preserve workflow behavior with only required name/path adjustments
  • update dependent reference in module-help.csv

Validation

  • node tools/cli/bmad-cli.js install --directory /Users/alex/src/bmad --modules bmm --tools claude-code --yes
  • verified installed output at /Users/alex/src/bmad/.claude/skills/bmad-sprint-status/
  • verified manifest placement: present in _bmad/_config/skill-manifest.csv; absent from _bmad/_config/workflow-manifest.csv
  • functional equivalence (mechanical protocol): normalized old-vs-new parity PASS for workflow.md
  • npm test

@augmentcode
Copy link
Copy Markdown

augmentcode bot commented Mar 12, 2026

🤖 Augment PR Summary

Summary: Converts the existing sprint-status workflow into a native skill package (bmad-sprint-status) by adding SKILL.md and switching the manifest to type: skill while preserving workflow behavior.
Notes: Updates the workflow frontmatter/installed path and adjusts downstream references so it’s emitted in the skill manifest rather than the workflow manifest.

🤖 Was this summary useful? React with 👍 or 👎

Copy link
Copy Markdown

@augmentcode augmentcode bot left a comment

Choose a reason for hiding this comment

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

Review completed. No suggestions at this time.

Comment augment review to trigger a new review at any time.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 12, 2026

📝 Walkthrough

Walkthrough

This PR reorganizes the sprint-status workflow into a new bmad-sprint-status skill structure. It introduces a new SKILL.md documentation file, adds a manifest file in the new directory, updates the workflow metadata and path reference, and removes the old manifest from the original sprint-status location.

Changes

Cohort / File(s) Summary
New bmad-sprint-status skill structure
src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md, src/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml, src/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md
Added SKILL.md documentation file with metadata, new manifest declaring resource type as skill, and updated workflow.md with renamed workflow identifier (sprint-status → bmad-sprint-status) and simplified installed_path to .
Old sprint-status cleanup
src/bmm/workflows/4-implementation/sprint-status/bmad-skill-manifest.yaml
Removed legacy manifest file containing workflow declaration.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Suggested reviewers

  • bmadcode
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title directly and clearly summarizes the main change: converting a sprint-status workflow to native skill packaging, which matches the core objective of the pull request.
Description check ✅ Passed The description is directly related to the changeset, providing a clear summary of the conversion effort, validation steps performed, and expected outcomes.
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
  • Post copyable unit tests in a comment
  • Commit unit tests in branch convert-sprint-status-skill
📝 Coding Plan
  • Generate coding plan for human review comments

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

@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 (5)
src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md (3)

1-6: Document the non-interactive entry modes somewhere discoverable.

This skill supports mode=data and mode=validate, but the entrypoint gives callers no hint that those machine-oriented modes exist. A short note or example here would make the skill composable instead of looking interactive-only.

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

In `@src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md` around lines
1 - 6, Add a short discoverable note in SKILL.md for the bmad-sprint-status
skill that documents the non-interactive entry modes `mode=data` and
`mode=validate`; update the top description (near "Summarize sprint status...")
to mention these machine-oriented modes and include a brief example call or
usage line showing how to invoke the skill with mode=data and mode=validate so
callers know the skill is composable and not interactive-only.

2-3: The description undersells what this skill actually does.

workflow.md does more than “check/show sprint status” — it also selects the next recommended workflow action. If you want natural-language matching to work well, the description should advertise that next-step guidance explicitly.

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

In `@src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md` around lines
2 - 3, The SKILL.md description for the skill "bmad-sprint-status" currently
only says it summarizes sprint status; update the description string in SKILL.md
(the value under name: bmad-sprint-status) to explicitly mention that the skill
also recommends the next workflow action (next-step guidance) and surfaces risks
— e.g., add phrasing like "summarize sprint status, surface risks, and recommend
the next workflow action" so natural-language matching covers requests for both
status and next-step guidance; also ensure any README/workflow.md references to
this skill reflect the expanded capability.

6-6: Add a packaging test for the SKILL.mdworkflow.md handoff.

With native-skill packaging, this file is now the permanent entrypoint and workflow.md is the real body. A small install fixture that asserts the generated skill remains discoverable and still hands off to workflow.md would catch packaging regressions early.

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

In `@src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md` at line 6,
Add a unit/integration test that verifies the SKILL.md → workflow.md handoff in
the native-skill packaging process: create an install fixture that packages the
skill using the same packaging path as the build, installs the generated
artifact, then asserts the skill is discoverable and that invoking the skill's
entrypoint from SKILL.md results in workflow.md being executed (check for an
expected marker or output emitted by workflow.md). Put this test alongside
existing packaging tests and name it to reflect SKILL_to_workflow_handoff so it
runs in CI and will catch regressions in the packaging pipeline.
src/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml (1)

1-1: Add a regression fixture for the one-line skill manifest.

This conversion now depends on bmad-skill-manifest.yaml being discoverable from type: skill alone. That works today, but it is an easy silent failure if loadSkillManifest() or collectSkills() ever tighten their parsing. A tiny installer/manifest-generator fixture for this exact shape would keep the skill from disappearing unnoticed.

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

In
`@src/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml`
at line 1, Add a regression fixture containing the minimal one-line skill
manifest so the conversion/tests don't silently break; create a test fixture
file named bmad-skill-manifest.yaml whose contents match the single-line shape
used in the repo (type: skill) and ensure test helpers that exercise
loadSkillManifest() and collectSkills() can discover and load this fixture
(update the test fixture registry or manifest-generator helper if necessary) so
the one-line manifest remains covered by CI even if parsing is later tightened.
src/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md (1)

2-2: Add a rename-invariant test across directory, SKILL.md, and workflow.md.

For skills, canonical identity comes from the directory name, while execution/help text reads from SKILL.md and workflow.md. This rename now has three separate name sources for the same artifact; a cheap fixture asserting they stay identical would catch the next half-completed rename before it ships.

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

In `@src/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md` at line 2,
Add a rename-invariant test that asserts the canonical skill identity (the
directory name, e.g., "bmad-sprint-status") matches the declared name in
SKILL.md and the frontmatter "name:" value in workflow.md; implement a test
(e.g., test_rename_invariant or similar) that reads the current directory
basename, parses SKILL.md (plain text/title) and workflow.md frontmatter (the
"name:" key), and asserts all three strings are identical so future partial
renames fail the CI.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md`:
- Around line 1-6: The bmad-sprint-status skill is not listed in the Scrum
Master menu so it’s undiscoverable; add a menu entry for the workflow name
"bmad-sprint-status" into the SM agent configuration (the same section that
currently wires sibling workflows in sm.agent.yaml around the existing entries
at the block that includes the other implementation workflows), ensuring the
entry references the workflow id "bmad-sprint-status", provides a short
label/help text matching SKILL.md, and follows the same YAML structure/keys as
the other menu items so it appears in the SM interface.

In `@src/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md`:
- Line 2: The workflow was renamed to bmad-sprint-status but user-facing text
still references the old name "sprint-status" (notably in Step 1 and the first
failure path); search this file for the literal "sprint-status" and replace
those occurrences with "bmad-sprint-status" so instructions, error/failure
messages, and any rerun guidance (Step 1, failure path messages) point to the
new workflow name and avoid sending users back to the retired skill.

---

Nitpick comments:
In
`@src/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml`:
- Line 1: Add a regression fixture containing the minimal one-line skill
manifest so the conversion/tests don't silently break; create a test fixture
file named bmad-skill-manifest.yaml whose contents match the single-line shape
used in the repo (type: skill) and ensure test helpers that exercise
loadSkillManifest() and collectSkills() can discover and load this fixture
(update the test fixture registry or manifest-generator helper if necessary) so
the one-line manifest remains covered by CI even if parsing is later tightened.

In `@src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md`:
- Around line 1-6: Add a short discoverable note in SKILL.md for the
bmad-sprint-status skill that documents the non-interactive entry modes
`mode=data` and `mode=validate`; update the top description (near "Summarize
sprint status...") to mention these machine-oriented modes and include a brief
example call or usage line showing how to invoke the skill with mode=data and
mode=validate so callers know the skill is composable and not interactive-only.
- Around line 2-3: The SKILL.md description for the skill "bmad-sprint-status"
currently only says it summarizes sprint status; update the description string
in SKILL.md (the value under name: bmad-sprint-status) to explicitly mention
that the skill also recommends the next workflow action (next-step guidance) and
surfaces risks — e.g., add phrasing like "summarize sprint status, surface
risks, and recommend the next workflow action" so natural-language matching
covers requests for both status and next-step guidance; also ensure any
README/workflow.md references to this skill reflect the expanded capability.
- Line 6: Add a unit/integration test that verifies the SKILL.md → workflow.md
handoff in the native-skill packaging process: create an install fixture that
packages the skill using the same packaging path as the build, installs the
generated artifact, then asserts the skill is discoverable and that invoking the
skill's entrypoint from SKILL.md results in workflow.md being executed (check
for an expected marker or output emitted by workflow.md). Put this test
alongside existing packaging tests and name it to reflect
SKILL_to_workflow_handoff so it runs in CI and will catch regressions in the
packaging pipeline.

In `@src/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md`:
- Line 2: Add a rename-invariant test that asserts the canonical skill identity
(the directory name, e.g., "bmad-sprint-status") matches the declared name in
SKILL.md and the frontmatter "name:" value in workflow.md; implement a test
(e.g., test_rename_invariant or similar) that reads the current directory
basename, parses SKILL.md (plain text/title) and workflow.md frontmatter (the
"name:" key), and asserts all three strings are identical so future partial
renames fail the CI.
🪄 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: 0f231248-a2d7-4309-bdce-8bf3e4a85fbe

📥 Commits

Reviewing files that changed from the base of the PR and between 75ec4aa and 5584a69.

⛔ Files ignored due to path filters (1)
  • src/bmm/module-help.csv is excluded by !**/*.csv
📒 Files selected for processing (4)
  • src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md
  • src/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml
  • src/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md
  • src/bmm/workflows/4-implementation/sprint-status/bmad-skill-manifest.yaml
💤 Files with no reviewable changes (1)
  • src/bmm/workflows/4-implementation/sprint-status/bmad-skill-manifest.yaml

Comment on lines +1 to +6
---
name: bmad-sprint-status
description: 'Summarize sprint status and surface risks. Use when the user says "check sprint status" or "show sprint status"'
---

Follow the instructions in [workflow.md](workflow.md).
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

This skill is still missing an SM menu entry.

src/bmm/agents/sm.agent.yaml:20-26 wires sibling implementation workflows into the Scrum Master menu, but not sprint status. Converting this to a native skill and updating help text still leaves it effectively undiscoverable from the main SM interface.

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

In `@src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md` around lines
1 - 6, The bmad-sprint-status skill is not listed in the Scrum Master menu so
it’s undiscoverable; add a menu entry for the workflow name "bmad-sprint-status"
into the SM agent configuration (the same section that currently wires sibling
workflows in sm.agent.yaml around the existing entries at the block that
includes the other implementation workflows), ensuring the entry references the
workflow id "bmad-sprint-status", provides a short label/help text matching
SKILL.md, and follows the same YAML structure/keys as the other menu items so it
appears in the SM interface.

@@ -1,5 +1,5 @@
---
name: sprint-status
name: bmad-sprint-status
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

The rename is still leaking the retired skill name.

After renaming this workflow to bmad-sprint-status, Step 1 still tells the user to “rerun sprint-status”. The first failure path sends people straight back to the old name.

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

In `@src/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md` at line 2,
The workflow was renamed to bmad-sprint-status but user-facing text still
references the old name "sprint-status" (notably in Step 1 and the first failure
path); search this file for the literal "sprint-status" and replace those
occurrences with "bmad-sprint-status" so instructions, error/failure messages,
and any rerun guidance (Step 1, failure path messages) point to the new workflow
name and avoid sending users back to the retired skill.

@alexeyv alexeyv force-pushed the convert-sprint-status-skill branch from 5584a69 to 6691376 Compare March 14, 2026 11:46
@alexeyv alexeyv force-pushed the convert-sprint-status-skill branch from 6691376 to aecead2 Compare March 14, 2026 20:19
@alexeyv alexeyv merged commit 67f0501 into main Mar 14, 2026
5 checks passed
@alexeyv alexeyv deleted the convert-sprint-status-skill branch March 15, 2026 02:50
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.

1 participant