* feat(party-mode): add persistent per-party memory
Each party now keeps a succinct, append-only memlog (the memlog standard)
under {memory_dir}/<party>/, so a room remembers prior sessions and opens
in character carrying them forward.
- Memory accrues live: capture memorable beats as they land, with a floor
so an abandoned session still leaves a trace; wrap-up is a top-up.
- Read distills via a reader subagent that returns only current standing
state (latest dynamic per pair, open threads, recent callbacks) so the
raw log never enters the party context.
- Writes are silent and fail safe: a missing or erroring memlog.py is
skipped without breaking the fiction.
- New customize knobs: party_memory (on by default) and memory_dir.
Keyed per party (group id, or `installed` for the default room); ad-hoc
casts stay ephemeral. On-disk compaction is left to a future memlog.py pass.
* refactor(party-mode): standard structure, per-group memory, keep on-the-fly cast
- Restructure SKILL.md to the standard skill shape (intro -> Conventions ->
On Activation -> content); consolidate all performance rules into one
"Keep It Feeling Like a Party" section. SKILL.md ~500 tokens lighter.
- Per-group `memory` flag: global party_memory now governs only the default
room; resolve_party.py resolves memory_enabled per active roster (default
room -> party_memory, named group -> own flag), with tests.
- On-the-fly characters are captured as memlog entries during a session; at
wrap-up the room offers to save them into the party via bmad-customize.
- Memory mechanics consolidated into references/party-memory.md; SKILL.md
step 5 just routes to it.
- Docs updated.
* docs(party-mode): fix open-cast lock-down claim and python3->uv run in create-party
* Add configurable parties to bmad-party-mode
Party mode gains a customize.toml config surface and a guided
authoring flow, while the out-of-the-box default room is unchanged.
- customize.toml: party_members (custom personas), party_groups
(named rooms with an optional freeform `scene`), default_party,
and party_mode (auto/session/subagent/agent-team). Universal
hooks wired (activation steps, persistent_facts, on_complete).
- Roster model: collective = installed agents + custom members
(the pool, summonable by name). Default room stays installed-only
so customs never crowd it. Groups curate subsets; open-cast groups
(no members) are cast from the scene on the fly.
- scripts/resolve_party.py: lazy roster resolver (installed-only
default, group menu by name, one group's detail on demand,
alias/override merge) + unit tests.
- references/create-party.md: create/edit parties, distill personas
from data for focus groups, persist ad-hoc casts; writes overrides
via bmad-customize.
- Ships a "Code Review Crew" group (5 adversarial review lenses),
available via --party but absent from the default room.
* Rework party-mode modes + rewrite the docs explainer
Skill:
- How It Runs is now a compact router; one mode active per session,
runtime --mode wins over the customize default, all degrade to session
- Default mode is `session`; `auto`/`subagent`/`agent-team` carved to
references/mode-*.md, loaded only when that mode is active
- Add references/mode-auto.md (spawn-vs-voice rubric), mode-subagent.md,
mode-agent-team.md
- resolve_party.py fallback default auto -> session
- customize.toml: party_mode default session; trim duplicated mode gloss
- Trim restated script-contract prose; collapse "Following the User's Lead";
add scene/persona-binding and web-search rules; offer an HTML keepsake
at wrap-up
Docs:
- Full rewrite of docs/explanation/party-mode.md: the four modes, custom
parties (personas, scenes, shapes), the shipped Code Review Crew as one
example beside the module-based default, launch examples, party ideas,
and the multi-group bonus tip
* Keep party energy up and route the keepsake to a config output dir
- SKILL.md: add "Keep It Feeling Like a Party" guidance so the room stays
fun and engaging and doesn't drift into Q&A or a report
- Keepsake now writes to {workflow.output_dir}; step 2 resolves
{output_folder} and {date}
- customize.toml: add output_dir = {output_folder}/party-mode, overridable
in team/user TOML (matches the bmad-brainstorming output pattern)