Compare commits

...

4 Commits

Author SHA1 Message Date
Nikolas de Hor f2c531039b
Merge 1a85069b75 into e550df2474 2026-04-19 19:33:50 -03:00
Brian e550df2474
Revert "feat(skills): YAML-based agent customization with Python resolver (#2282)" (#2283)
This reverts commit bd1c0053d5.
2026-04-19 11:09:21 -05:00
Brian bd1c0053d5
feat(skills): YAML-based agent customization with Python resolver (#2282)
Three-layer customization (skill defaults → team → user) for BMad agents    
  and any skill that opts in. Users edit `_bmad/custom/{skill-name}.yaml`
  (team, committed) or `{skill-name}.user.yaml` (personal, gitignored);       
  customizations survive updates.                                             
                                                                              
  Resolver is a Python script using PEP 723 inline metadata, invoked via      
  `uv run` so deps auto-install into a cached isolated env on first call.     
  This aligns with Anthropic's Agent Skills spec and BMB conventions, and     
  keeps the dependency declared (scannable by pip-audit/Dependabot) rather    
  than vendored.                                                              
                                                                              
  ## Design choices                                                           
                                                                              
  - **Agent identity is hardcoded** in SKILL.md (name, title, Overview prose) 
    so skills can be invoked reliably by role *or* default name. Brand
    recognition is preserved; customization shapes behavior, not identity.    
  - **Luminary-anchored personas** (e.g. "Channels Martin Fowler's            
    pragmatism and Werner Vogels's cloud-scale realism") deliver ~55%
    token savings per agent while preserving distinctive voice beats.         
  - **Universal per-field merge rules** with v6.1-compatible agent            
    semantics: metadata shallow-merge, persona replace, critical_actions      
    and memories append, menu merge-by-code, all else deep-merge.             
  - **Workflow customization** shares the same surface — `bmad-product-brief`
    pilots `activation_steps_prepend`, `activation_steps_append`, and         
    `skill_end` hooks that any workflow-style skill can adopt.                
                                                                              
  ## Infrastructure                                                           
                                                                              
  - `_bmad/scripts/` houses shared Python scripts (resolver + future).        
  - `_bmad/custom/` is provisioned empty with a seeded `.gitignore` for
    `*.user.yaml` on fresh installs.                                          
  - Installer filters ensure `scripts/`, `custom/`, and sidecar-generated   
    `memory/` directories are never treated as modules.                       
  - Dead v6.1 code cleaned up: `_config/agents/` no longer created,         
    `metadata.capabilities` removed from schema and CSV manifest.
2026-04-18 23:13:31 -05:00
Nikolas de Hor 1a85069b75 fix: restore validate-workflow as native skill directory
The validate-workflow task was accidentally deleted during the
XML-to-native-skill refactor in #1864. The schema, handler, and
test fixtures still reference it, creating broken invocations.

Recreates the task as a native skill directory following the
established pattern (SKILL.md + bmad-skill-manifest.yaml + workflow.md),
with the original validation logic preserved.

Fixes #1530
2026-03-11 19:38:13 -03:00
3 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,6 @@
---
name: validate-workflow
description: "Run a checklist against a document with thorough analysis and produce a validation report"
---
Follow the instructions in [workflow.md](workflow.md).

View File

@ -0,0 +1 @@
type: skill

View File

@ -0,0 +1,88 @@
# Validate Workflow Output
**Goal:** Run a checklist against a document with thorough analysis and produce a validation report.
**Inputs:**
- **workflow** (required) — Workflow path containing `checklist.md`
- **checklist** (optional) — Checklist to validate against (defaults to the workflow's `checklist.md`)
- **document** (optional) — Document to validate (ask user if not specified)
## STEPS
### Step 1: Setup
- If checklist not provided, load `checklist.md` from the workflow location
- Try to fuzzy-match files similar to the input document name; if document not provided or unsure, ask user: "Which document should I validate?"
- Load both the checklist and document
### Step 2: Validate (CRITICAL)
**For EVERY checklist item, WITHOUT SKIPPING ANY:**
1. Read the requirement carefully
2. Search the document for evidence along with any ancillary loaded documents or artifacts (quotes with line numbers)
3. Analyze deeply — look for explicit AND implied coverage
**Mark each item as:**
- **PASS** `✓` — Requirement fully met (provide evidence)
- **PARTIAL** `⚠` — Some coverage but incomplete (explain gaps)
- **FAIL** `✗` — Not met or severely deficient (explain why)
- **N/A** `` — Not applicable (explain reason)
**DO NOT SKIP ANY SECTIONS OR ITEMS.**
### Step 3: Generate Report
Create `validation-report-{timestamp}.md` in the document's folder with the following format:
```markdown
# Validation Report
**Document:** {document-path}
**Checklist:** {checklist-path}
**Date:** {timestamp}
## Summary
- Overall: X/Y passed (Z%)
- Critical Issues: {count}
## Section Results
### {Section Name}
Pass Rate: X/Y (Z%)
[MARK] {Item description}
Evidence: {Quote with line# or explanation}
{If FAIL/PARTIAL: Impact: {why this matters}}
## Failed Items
{All ✗ items with recommendations}
## Partial Items
{All ⚠ items with what's missing}
## Recommendations
1. Must Fix: {critical failures}
2. Should Improve: {important gaps}
3. Consider: {minor improvements}
```
### Step 4: Summary for User
- Present section-by-section summary
- Highlight all critical issues
- Provide path to saved report
- **HALT** — do not continue unless user asks
## HALT CONDITIONS
- HALT after presenting summary in Step 4
- HALT with error if no checklist is found and none is provided
- HALT with error if no document is found and user does not specify one