Config layers
Stock BMad already merges three files per skill. bglad uses that stack for Jira and git-host fields (GitLab or GitHub).
flowchart TD skill["Skill customize.toml<br/>generic empty hosts"] --> company["_bmad/custom/bglad-ticket-mr.toml<br/>org overlay, committed"] company --> user["_bmad/custom/bglad-ticket-mr.user.toml<br/>identity, gitignored"] user --> run["Resolved workflow for this run"]
Merge rules: scalars replace, arrays append, tables deep-merge. A list in *.user.toml appends.
uv run _bmad/scripts/resolve_customization.py \ --skill .agents/skills/bglad-ticket-mr \ --project-root . \ --key workflow| Layer | File | Contains |
|---|---|---|
| Skill default | .agents/skills/bglad-ticket-mr/customize.toml | Empty hosts, git_forge, squash, commit templates |
| Org overlay | _bmad/custom/bglad-ticket-mr.toml | Hosts, keys, spec_store, git_forge, [workflow.teams] |
| Person | _bmad/custom/bglad-ticket-mr.user.toml | jira_assignee_account, gitlab_username, github_username |
npx bglad-method install writes the org overlay when missing and never overwrites one that exists.
If Jira or git-host fields the current intent needs are empty, the ticket skill
asks (it does not invent field ids or assume GitLab vs GitHub). Knowledge
folder default is knowledge/ (bglad-knowledge knowledge_dir); override in
bglad-how-we-work.local.md.
spec_store is on the org overlay. Jira specs need a Jira MCP or jira CLI; Confluence specs need a Confluence MCP or CLI. Markdown specs need neither.
git_forge is gitlab or github. Install infers github.com and
gitlab.com from origin when it can. Other remotes stay empty until you
set them.
A squad that needs different reviewers or extra facts uses Override defaults — same BMad merge, plus bglad squad tables and bglad-how-we-work.local.md.