Commit Graph

2 Commits

Author SHA1 Message Date
Brian Madison 4d5842c8c7 feat(skills): workflow customization pilot + resolver and installer fixes
Workflow customization:
- bmad-product-brief adopts the customize.yaml pattern with new standard
  keys (activation_steps_prepend, activation_steps_append, skill_end)
  that apply to any skill type, not just workflows.
- SKILL.md resolves customization as the first activation step, executes
  prepend items immediately, retains append for after greeting, and
  re-resolves skill_end after Stage 5 (Finalize).
- Added {skill-root} to the Conventions block.
- Normalized all sub-prompt path references to bare-from-skill-root
  (../agents/ -> agents/, sibling filenames -> prompts/<file>).

Metadata:
- Added "DO NOT EDIT -- overwritten on every update." header to all 6
  agent customize.yaml files.

Resolver:
- find_project_root now walks from skill_dir first, then falls back to
  cwd. Nested-workspace setups where an ancestor of cwd has an unrelated
  _bmad/ would previously bind the resolver to the wrong project.

Installer:
- Added 'memory' to the nonModuleDirs sets at all three filter sites so
  sidecar-generated _bmad/memory/<agent>/ folders aren't treated as
  modules and don't receive a generated config.yaml.
- detectCustomFiles now skips the entire _memory/ and memory/ subtrees
  generically, replacing the old v6.1-specific -sidecar substring check.
  Agent runtime state is never flagged as custom/modified noise on update.
2026-04-18 22:04:58 -05:00
Brian Madison 8cd157864e feat(skills): add customization surface to bmad-product-brief workflow
First workflow to adopt the customize.yaml + three-layer merge pattern
that was previously agent-only. Proves the resolver works for workflow
skills and exercises the deep-merge fix from the previous commit.

Standard workflow customization surface:
  additional_resources: []     # files for the workflow to reference
  inject:
    before: ""                 # prompt injected before workflow begins
    after: ""                  # prompt injected after workflow completes

SKILL.md now:
  - Adds a Conventions block defining {skill-root}, {project-root}, {skill-name}
  - Resolves customization as step 1 of On Activation and applies
    inject.before + notes additional_resources
  - Resolves inject.after in a new Post-Workflow Customization section
    that fires after Stage 5 (Finalize) completes

Verified end-to-end:
  - Defaults resolve cleanly (empty strings, empty array)
  - Team override of inject.before preserves inject.after default
    (the deep-merge behavior docs promise)
  - User layer adds inject.after on top of team's inject.before
  - Dotted --key inject.after extraction works for the post-workflow call
2026-04-18 20:47:43 -05:00