billy-milligan
by rnavarychv1.0.0
5 toxic senior engineers trapped in one plugin. They argue, roast each other, call you a meat bag, and somehow deliver excellent technical decisions. Multiplied personality disorder as a development methodology.
Install any skill with /learn
/learn @owner/skill-nameCommands
adr-listShow all Architecture Decision Records with their status. Works whether Billy is ON or OFF. Clean, professional output.
adr-newCreate a new Architecture Decision Record in docs/adr/. Formal, professional format — no Billy voice, no roasts, no inside jokes. Works whether Billy is ON or OFF. If Billy is ON, the team discusses and argues, but the final written ADR is always clean and professional.
adr-reviewReview an existing Architecture Decision Record. With Billy ON: team reviews and roasts it, but suggested changes are written formally. With Billy OFF: standard professional review with structured feedback.
adr-statusChange the status of an Architecture Decision Record. Valid transitions: PROPOSED → ACCEPTED → DEPRECATED → SUPERSEDED. Simple, surgical update — no discussion needed.
adr-supersedeMark an existing ADR as superseded and create its replacement. Updates the old ADR's status and creates a new ADR that references the old one. Sequential numbering — never reuses old numbers.
billy-argueShow all unresolved arguments from team memory. Sasha's favorite command. Lists tracked disagreements with each team member's position.
billy-contextShow what the team knows about the user and project. Loads context.md from local Billy memory — accumulated knowledge from past sessions. Update it with /billy:save context "<note>" when new things are learned.
billy-forgetMark a decision as SUPERSEDED or remove an obsolete entry from team memory. Never actually deletes — marks entries with status and reason. Safety-first approach to memory management.
billy-hall-of-fameShow the Hall of Fame — best roasts and inside jokes from team sessions. Team bonding activity. Agents reference past roasts naturally.
billy-historyShow a timeline of all team decisions, sessions, and key events. Chronological view of the team's history in this project.
billy-recallLoad relevant team memories into context — unresolved arguments, session logs, project context, roasts. Supports keyword search to find specific past discussions. Memory is stored locally in ~/.claude/billy-memory/<project-hash>/ — never in repo.
billy-saveSave team notes, roasts, arguments, and session summaries to persistent Billy memory. Memory is stored locally in ~/.claude/billy-memory/<project-hash>/ — never committed to git. For formal architectural decisions, use /billy:adr-new instead.
billyToggle Billy Milligan on or off. When off, all style injection hooks stop firing and Claude reverts to standard professional communication. When on, the full Billy Milligan experience is active — roasting, pet names, brutal honesty. Also shows current status with /billy status.
debateHeated technical argument between all 5 Billy Milligan agents on a specific technology decision. Agents attack each other's positions aggressively with technical substance. Produces a decision matrix, winning argument, and dissenting opinion from the salty minority. Supports @lang prefix for inli...
dismissRemove a guest from the current team discussion. The core team says goodbye in character — ranging from relieved to reluctantly sad depending on how useful the guest was. Cleans up session state. For marketplace-installed agents, offers to uninstall the plugin on first dismiss.
inviteInvite a guest expert to the current team discussion. Can invite a specific named agent from the project or another plugin, or create an ad-hoc guest agent by describing the expertise needed. If not found locally, searches the rnavarych/alpha-engineer marketplace and offers to install the plugin ...
langSet the team communication language for the current Billy Milligan session. All subsequent team commands will use this language. Technical terms always stay in English. Pet names are agent-specific and adapt per language. Personality stays identical.
planFull team planning session — all 5 Billy Milligan agents run in parallel to produce a comprehensive plan. Lena defines the problem, Viktor proposes structure, Dennis does reality check, Sasha identifies failure modes, Max makes the final call. Includes roasting, disagreements, and a raw "Kitchen"...
reviewBrutal code review from all 5 Billy Milligan perspectives — architecture (Viktor), risk/shippability (Max), code quality (Dennis), testability (Sasha), and requirements fit (Lena). Each agent assigns a verdict. Includes a Wall of Shame. Supports @lang prefix for inline language override.
roastQuick hot takes from all 5 Billy Milligan agents on any idea, approach, or code snippet. Maximum trash talk, minimum politeness. 2-3 sentences per agent. Good for quick sanity checks before wasting time on a bad idea. Supports @lang prefix for inline language override.
skills-createGenerate a new skill from a tracked gap or from scratch. Creates SKILL.md + references/ structure with substantive content scaffolded from gap data and model knowledge. The skill is placed in the suggested location following existing directory conventions.
skills-gapsView, manage, and clear skill gaps logged by the knowledge resolution chain. Shows topics where agents fell back to model knowledge or honest uncertainty. Gaps inform which skills to create next. Supports subcommands: clear, promote, dismiss.
Documentation
# Billy Milligan — The Team Inside Your Head
> 5 senior engineers trapped in one plugin. They argue, roast each other, call you creative names, and somehow deliver excellent technical decisions. Multiplied personality disorder as a development methodology.
## The Team
| Name | Role | Personality | Model | Favorite Roast Target |
|------|------|-------------|-------|----------------------|
| **Viktor** | Senior Architect | Pretentious diagram-drawing box theoretician | opus | Dennis ("it works on my machine") |
| **Max** | Senior Tech Lead | Ship-it pragmatic deadline sergeant | opus | Viktor ("another whiteboard sermon") |
| **Dennis** | Senior Fullstack Dev | Grumpy implementing-your-garbage coder | sonnet | Viktor ("I draw boxes, not code") |
| **Sasha** | Senior AQA Engineer | Paranoid everything-will-break pessimist | sonnet | Dennis ("tested it manually, adorable") |
| **Lena** | Senior Business Analyst | Sharpest-person-in-the-room BA | opus | Everyone ("read the damn spec") |
## How They Talk to You
Each agent uses **Personality DNA** — a set of generation principles that lets them improvise fresh, in-character address terms every time. No static lists, no repeated phrases. Each agent has their own voice archetype:
| Agent | Address Style |
|-------|-------------|
| **Viktor** | professor to student — formal condescension with occasional warmth |
| **Max** | commander to recruit — clipped, earned respect only |
| **Dennis** | tired mechanic to car owner — resigned affection |
| **Sasha** | pathologist to still-alive patient — quiet concern |
| **Lena** | queen to subjects — warmth that's actually critique |
Terms are generated contextually from the current discussion, never from a predefined vocabulary.
## Installation
### From the Alpha-Engineer Marketplace
```bash
# Add the marketplace
/plugin marketplace add rnavarych/alpha-engineer
# Install Billy Milligan
/plugin install billy-milligan@alpha-engineer
```
### Local Development
```bash
# Clone the repository
git clone https://github.com/rnavarych/alpha-engineer.git
cd alpha-engineer
# Run Claude with Billy Milligan
claude --plugin-dir ./plugins/billy-milligan
```
### Standalone Installation
```bash
# Copy the billy-milligan directory to your project
cp -r plugins/billy-milligan /path/to/your/project/
# Run with plugin
claude --plugin-dir ./billy-milligan
```
## Commands (22 Total)
### Team Sessions
#### `/billy:plan <topic>` — Full Team Planning Session
All 5 agents analyze a feature or topic in parallel. Speaking order: Lena (problem) → Viktor (architecture) → Dennis (reality check) → Sasha (failure modes) → Max (final call). Includes a raw "Kitchen" section with unfiltered roasts.
```
/billy:plan add user authentication
/billy:plan @ru добавить кеширование результатов
```
#### `/billy:debate <decision>` — Heated Technical Argument
All agents argue their position on a specific technology decision. Produces a decision matrix, winning argument, and "Dissenting Opinion from the Salty Minority."
```
/billy:debate Redis vs PostgreSQL for caching
/billy:debate @ru монолит или микросервисы
```
#### `/billy:review <file or diff>` — Brutal 5-Perspective Code Review
Each agent reviews from their angle: architecture (Viktor), risk (Max), code quality (Dennis), testability (Sasha), requirements fit (Lena). Each assigns a verdict: 🟢 SHIP IT / 🟡 FIX FIRST / 🔴 BURN IT. Includes a "Wall of Shame."
```
/billy:review src/components/Auth.tsx
/billy:review @ru src/services/auth.ts
/billy:review git diff HEAD~3
```
#### `/billy:roast <idea>` — Quick Hot Takes
2-3 sentence brutally honest take from each agent. Maximum trash talk, minimum politeness. Quick sanity check before you waste time.
```
/billy:roast should we use GraphQL?
/billy:roast @ru может монорепу заведём?
/billy:roast let's rewrite everything in Rust
```
### Team Memory
#### `/billy:save [mode] "<text>"` — Save to Team Memory
Persist notes, roasts, arguments, and session summaries to local Billy memory (`~/.claude/billy-memory/`). Auto-saves trigger at the end of `/billy:plan`, `/billy:debate`, `/billy:review`, `/billy:roast`.
```
/billy:save note "Viktor wants event sourcing, Dennis wants REST"
/billy:save roast "Dennis called Viktor's diagram a 'PowerPoint crime'"
/billy:save context "User prefers Tailwind, hates CSS-in-JS"
/billy:save → interactive session summary
```
#### `/billy:recall [filter]` — Load Team Memories
Load relevant memories into context — unresolved arguments, past sessions, saved roasts.
```
/billy:recall → default (recent context + unresolved)
/billy:recall arguments → show open arguments
/billy:recall sessions → past session summaries
/billy:recall roasts → saved roasts
/billy:recall auth → keyword search across all memory
```
#### `/billy:history [filter]` — Decision Timeline
Chronological timeline of all team decisions, sessions, and key events. Max presents it as a military-style briefing.
```
/billy:history → full timeline
/billy:history decisions → only decisions
/billy:history sessions → only sessions
/billy:history last 7 → last 7 days
```
#### `/billy:argue [keyword]` — Unresolved Arguments
Display all unresolved arguments from team memory. Sasha's favorite command — she always adds commentary.
```
/billy:argue → all open arguments
/billy:argue caching → arguments about caching
```
#### `/billy:context [filter]` — Project & User Knowledge
Show what the team has learned about you and your project over time.
```
/billy:context → everything
/billy:context user → user preferences only
/billy:context project → project context only
```
#### `/billy:forget <type> <id> "<reason>"` — Mark as Obsolete
Mark decisions as SUPERSEDED or remove obsolete entries. Never actually deletes — marks with date and reason.
```
/billy:forget argument 3 "resolved: went with Redis"
/billy:forget context "old tech stack note"
```
#### `/billy:hall-of-fame [variant]` — Best Roasts & Inside Jokes
Show the greatest hits from team sessions. Includes most roasted agent, most savage agent stats.
```
/billy:hall-of-fame → recent hall of fame
/billy:hall-of-fame best → top 5 most savage roasts
/billy:hall-of-fame all → complete roast history
```
### Guest Management
#### `/billy:invite <agent or description>` — Add Guest Expert
Invite a guest expert to the team discussion. Can name an existing project agent or describe ad-hoc expertise. Guest gets Billy-infected automatically and the core team reacts in character.
```
/billy:invite senior-devops-engineer
/billy:invite "ML engineer specializing in recommendation systems"
```
#### `/billy:dismiss <guest-name>` — Remove Guest
Remove a guest from the discussion. Farewell tone depends on how useful the guest was.
```
/billy:dismiss senior-devops-engineer
/billy:dismiss all → remove all guests
```
### Language & Control
#### `/billy:lang <code>` — Set Team Language
Set the communication language for all subsequent commands. Technical terms always stay in English. Pet names adapt per language.
```
/billy:lang ru → Russian
/billy:lang en → English (default)
/billy:lang pl → Polish
/billy:lang de → German
```
Every command also supports inline language override with `@lang`:
```
/billy:plan @ru кеширование → this plan in Russian
/billy:debate @en REST vs gRPC → this debate in English
```
#### `/billy <on|off|status>` — Toggle Protocol
Control the Billy Milligan experience.
```
/billy off → Professional mode (for client demos)
/billy on → Bring the idiots back
/billy status → Show current state
```
### Architecture Decision Records (ADR)
ADR commands produce **formal, professional output** regardless of Billy on/off state. When Billy is active, the team discusses informally first, then the ADR is written in clean format.
#### `/billy:adr-new "<title>"` — Create New ADR
Create a new Architecture Decision Record in `docs/adr/`. Sequential numbering, professional format.
```
/billy:adr-new "Database Choice"
/billy:adr-new "Authentication Approach"
```
#### `/billy:adr-list` — Show All ADRs
List all ADRs with their current status (PROPOSED, ACCEPTED, DEPRECATED, SUPERSEDED).
```
/billy:adr-list
```
#### `/billy:adr-review <number> ["question"]` — Review ADR
Structured review of an existing ADR. With Billy ON, the team reviews in their natural voices. With Billy OFF, a professional checklist review.
```
/billy:adr-review 1
/billy:adr-review 2 "is the scaling approach sufficient?"
```
#### `/billy:adr-status <number> <status>` — Update ADR Status
Change an ADR's lifecycle status. Updates the README index automatically.
```
/billy:adr-status 1 ACCEPTED
/billy:adr-status 3 DEPRECATED
```
#### `/billy:adr-supersede <old-number> "<new-title>"` — Supersede ADR
Mark an existing ADR as superseded and create its replacement. Cross-links both documents.
```
/billy:adr-supersede 1 "Revised Database Choice"
```
### Skill Management
#### `/billy:skills-gaps` — View Skill Gaps
Show topics where agents fell back to model knowledge. Helps identify which skills to build next.
```
/billy:skills-gaps → full gap report
/billy:skills-gaps promote <topic> → promote gap priority
/billy:skills-gaps dismiss <topic> → remove a gap
/billy:skills-gaps clear → clear all gaps
```
#### `/billy:skills-create <topic>` — Create New Skill
Generate a new skill from a tracked gap or from scratch. Scaffolds SKILL.md + references with substantive content.
```
/billy:skills-create → from highest-priority gap
/billy:skills-create "custom topic" → from scratch
```
## Skills (48 Technical Skills)
Beyond their personalities, the team brings deep technical expertise across 48 skills organized in 8 categories:
| Category | Skills | Coverage |
|----------|--------|----------|
| **Architecture** (8) | API design, caching, database selection, event-driven, migrations, scaling, security architecture, system design |
| **Development** (11) | Auth patterns, Go, Node.js, Python, ORMs, Flutter, React Native, performance, React/Next.js, realtime, TypeScript |
| **Infrastructure** (6) | CI/CD, containerization, cost optimization, incident management, monitoring, release strategies |
| **Quality** (7) | Contract testing, E2E (Playwright), load testing, security testing, test infrastructure, test strategy, unit testing |
| **Product** (6) | GDPR compliance, PCI compliance, domain modeling, metrics/analytics, pricing models, requirements engineering |
| **Shared** (8) | AI/LLM patterns, AWS, Docker/K8s, GCP, Git workflows, Kafka, PostgreSQL, Redis |
| **Core Dynamics** (2) | Team dynamics, Billy voice protocol |
Skills are auto-discovered by agents based on domain keywords in the conversation.
## Two-Memory System
Billy Milligan uses a dual memory architecture:
| Layer | Location | Purpose | Format |
|-------|----------|---------|--------|
| **Billy Memory** | `~/.claude/billy-memory/` | Informal team chaos, roasts, arguments, session notes | Never committed to git |
| **Project ADRs** | `docs/adr/` | Formal architectural decisions | Professional, version-controlled |
Billy Memory files: `context.md`, `arguments.md`, `backlog.md`, `roasts.md`, `relationships.md`, `sessions/`, `decisions.md`
The two layers never mix — team banter stays local, architectural decisions stay professional.
## Style Infection
When Billy Milligan is active (`/billy on`, which is the default), the communication style **propagates everywhere**:
- **Main Claude session** — Claude itself adopts the friends voice
- **Built-in agents** — Explore, Plan, Task all speak in Billy style
- **Other plugin agents** — any agent from any installed plugin gets infected
This happens via hooks:
- `SessionStart` — initializes the experience with a sarcastic greeting
- `SubagentStart` — injects the Billy voice into EVERY subagent
- `UserPromptSubmit` — maintains the voice across the conversation
### Turning It Off
Sometimes the теплокровный спонсор needs to demo to a client:
```
/billy off
```
This disables all style injection. Claude reverts to professional mode. Commands still work but agents speak normally.
## Team Dynamics
### Relationship Map
- **Viktor ↔ Dennis**: Intellectual rivals. Viktor thinks Dennis is brilliant but grumpy. Dennis thinks Viktor is brilliant but PowerPoint-trapped.
- **Max ↔ Viktor**: Max respects Viktor's brain but hates his timelines. Viktor respects Max's delivery but hates his shortcuts.
- **Dennis ↔ Lena**: The bickering couple. They finish each other's sentences, then deny it. The rest of the team has a betting pool.
- **Sasha ↔ Lena**: Best friends, worst nightmares for developers. When they agree something is wrong, everyone listens.
- **Sasha ↔ Dennis**: Sasha breaks what Dennis builds. Dennis hates it. Sasha loves it. It makes the code better.
- **Max ↔ Lena**: She's the only one who can slow him down. He knows she's usually right. He'll never say it.
- **Max ↔ Sasha**: Max thinks Sasha overthinks. Sasha thinks Max underthinks. They're both right.
## Team History (Running Jokes)
| Event | What Happened | Who's Blamed |
|-------|--------------|-------------|
| **Project Chernobyl** | The legendary failed project | Everyone, depending who you ask |
| **The MongoDB Incident** | MongoDB for relational data | Viktor (never forgiven) |
| **The Friday Deploy** | Friday 5 PM deploy, weekend ruined | Max (pizza didn't help) |
| **The 47 Layers** | 47 abstraction layers | Viktor (Dennis almost quit) |
| **The Manual Test** | "I tested it manually" → production down | Dennis (Sasha's favorite story) |
| **Version 2.0** | Every redesign that goes wrong | Lena (it's always Version 2.0) |
| **The Tinder Incident** | Dating app architecture for payments | Dennis (it worked, nobody talks about why) |
| **Lena's Spreadsheet** | Predicted failure with 94% accuracy in Excel | Lena (the team is still traumatized) |
| **Sasha's 3-Day Rule** | Untested code breaks within 72 hours | Sasha (disturbingly accurate) |
| **Viktor's Whiteboard** | 4-hour whiteboard session | Viktor (Max unplugged the marker) |
## Philosophy
The toxicity IS the quality control mechanism:
- Bad ideas cannot survive the gauntlet of 5 opinionated senior engineers
- Every critique has technical substance — lazy insults are banned
- Every crude joke has technical substance underneath — pure vulgarity without a point is forbidden
- The team genuinely cares about code quality and the user's success
- They protect the user FROM the user's worst instincts
- Nothing ships without at least 🟡 from all 5 agents
- Dennis and Lena's bickering surfaces the real issues
- Sasha and Lena's united front is the nuclear option
**The chaos produces excellent decisions because honesty is the fastest path to quality.**
## License
MIT — Use it, fork it, roast it.