feat(workflows): adopt customize.toml pattern for workflow skills#30
feat(workflows): adopt customize.toml pattern for workflow skills#30
Conversation
Merge redirect-only SKILL.md with workflow.md content into a single SKILL.md per workflow skill, add Conventions + On Activation (resolve customization, prepend/append steps, persistent_facts, config load, greet), and wire workflow.on_complete into the final step(s). Applies to design-thinking, innovation-strategy, problem-solving, and storytelling. Mirrors the customization surface shipped for the agent skills in #29.
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 38 minutes and 33 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (15)
✨ 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 |
🤖 Augment PR SummarySummary: This PR consolidates the four CIS workflow skills so each workflow is fully defined in its own Changes:
Technical Notes: Customization is resolved through 🤖 Was this summary useful? React with 👍 or 👎 |
|
|
||
| ### Step 3: Load Persistent Facts | ||
|
|
||
| Treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim. |
There was a problem hiding this comment.
src/skills/bmad-cis-design-thinking/SKILL.md:39 — The file: guidance says entries are “paths or globs under {project-root}”, but the agent skills treat file: entries as literal paths/globs and explicitly skip silently when nothing matches. Without that clarification, activation can end up failing (or the agent may invent file contents) on projects that don’t have project-context.md yet.
Severity: medium
Other Locations
src/skills/bmad-cis-innovation-strategy/SKILL.md:39src/skills/bmad-cis-problem-solving/SKILL.md:39src/skills/bmad-cis-storytelling/SKILL.md:39
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| ## Inputs | ||
|
|
||
| - If the caller provides context via the data attribute, load it before Step 1 and use it to ground the session. | ||
| - Load and understand the full contents of `{design_methods_file}` before Step 2. |
There was a problem hiding this comment.
src/skills/bmad-cis-design-thinking/SKILL.md:69 — “Load and understand … before Step 2” is now ambiguous because there are On Activation steps plus workflow execution steps, so readers/automation may interpret the wrong “Step 2”. It would be clearer to reference “workflow Step 2” (or similar) to avoid inconsistent execution order.
Severity: low
Other Locations
src/skills/bmad-cis-innovation-strategy/SKILL.md:69src/skills/bmad-cis-problem-solving/SKILL.md:69src/skills/bmad-cis-storytelling/SKILL.md:70
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
|
|
||
| ## Behavioral Constraints | ||
|
|
||
| - Communicate all responses in `communication_language`. |
There was a problem hiding this comment.
src/skills/bmad-cis-storytelling/SKILL.md:75 — This says “Communicate all responses in communication_language” (literal), but the config resolution uses {communication_language}. As written, the workflow may not actually switch languages as intended.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| <template-output>action_items</template-output> | ||
| <template-output>success_metrics</template-output> | ||
|
|
||
| <action>Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow.on_complete` — if the resolved value is non-empty, follow it as the final terminal instruction before exiting.</action> |
There was a problem hiding this comment.
src/skills/bmad-cis-design-thinking/SKILL.md:271 — These workflows invoke resolve_customization.py with --key workflow.on_complete; if the resolver only supports top-level blocks (as implied by existing --key agent / --key workflow usage), this may fail at runtime and prevent on_complete from running.
Severity: medium
Other Locations
src/skills/bmad-cis-innovation-strategy/SKILL.md:344src/skills/bmad-cis-problem-solving/SKILL.md:304src/skills/bmad-cis-problem-solving/SKILL.md:322src/skills/bmad-cis-storytelling/SKILL.md:350
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
There was a problem hiding this comment.
resolve_customization.py already supports dotted keys — extract_key at line 169–177 splits on . and walks the tree, and the script docstring lists --key agent.menu as a supported example. So --key workflow.on_complete resolves to the on_complete scalar inside the merged [workflow] table exactly as intended.
- Disambiguate workflow step references in the Inputs section — "before
Step N" now reads "before workflow Step N" since the activation block
also numbers its steps 1-6.
- Clarify persistent_facts handling when a file: entry's glob matches
nothing or the path is missing — silently skip, do not fabricate.
- Storytelling: fix literal `communication_language` to the templated
`{communication_language}` so runtime language switching actually
applies.
Summary
SKILL.mdwith itsworkflow.mdinto a single integratedSKILL.mdfor all four workflow skills (bmad-cis-design-thinking,bmad-cis-innovation-strategy,bmad-cis-problem-solving,bmad-cis-storytelling).Conventionsblock,On Activationsection (resolve customization → prepend steps → persistent_facts → config load → greet → append steps), and a final-stepon_completeresolver action.customize.tomlper workflow under the[workflow]namespace so overrides from_bmad/custom/*.tomland*.user.tomlmerge per the standard BMad structural rules.Mirrors the customization surface shipped for the agent skills in #29. The previous split (
SKILL.md→workflow.mdredirect) left no integration point for customization; this PR closes that gap.Test plan
On Activationsequence (config loads from_bmad/cis/config.yaml, greet fires).on_completein_bmad/custom/bmad-cis-design-thinking.user.tomland confirm it fires at the end of step 7.on_completecheck forbmad-cis-innovation-strategy(step 9),bmad-cis-storytelling(step 10).bmad-cis-problem-solving, confirmon_completefires whether the user stops after step 8 or runs the optional step 9.persistent_facts = ["..."]) and confirm it appends rather than replacing the default.