Extract a DDD-style ubiquitous language glossary from conversation and codebase, flagging ambiguities and proposing canonical terms. Saves to .flux/brain/business/glossary.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions "domain model" or "DDD". Triggers on literal `/flux:ubiquitous-language`.
From fluxnpx claudepluginhub nairon-ai/flux --plugin fluxThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Extract and formalize domain terminology into a consistent glossary, stored in the brain vault.
"If developers and domain experts use different terms for the same concept, bugs hide in the translation."
IMPORTANT: This plugin uses .flux/ for ALL task tracking. Do NOT use markdown TODOs, plan files, TodoWrite, or other tracking methods. All task state must be read and written via fluxctl.
CRITICAL: fluxctl is BUNDLED — NOT installed globally. which fluxctl will fail (expected). Always use:
PLUGIN_ROOT="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}}"
[ ! -d "$PLUGIN_ROOT/scripts" ] && PLUGIN_ROOT=$(ls -td ~/.claude/plugins/cache/nairon-flux/flux/*/ 2>/dev/null | head -1)
FLUXCTL="${PLUGIN_ROOT}/scripts/fluxctl"
$FLUXCTL <command>
On entry, set the session phase:
$FLUXCTL session-phase set ubiquitous_language
On completion, reset:
$FLUXCTL session-phase set idle
Agent Compatibility: This skill works across Codex, OpenCode, and legacy Claude environments. See agent-compat.md for tool differences.
Full request: $ARGUMENTS
Scan two sources for domain terminology:
From conversation: Identify domain-relevant nouns, verbs, and concepts discussed so far.
From codebase: Explore models, types, and naming conventions:
# Check for existing glossary
cat .flux/brain/business/glossary.md 2>/dev/null
# Look at domain models
Use Glob and Grep to find:
For each concept, pick one canonical term. Be opinionated — the value is in making a clear choice, not listing options.
Write or update .flux/brain/business/glossary.md:
# Ubiquitous Language
## [Domain Area 1]
| Term | Definition | Aliases to avoid |
|------|-----------|-----------------|
| **Order** | A customer's request to purchase one or more items | Purchase, transaction |
| **Invoice** | A request for payment sent after delivery | Bill, payment request |
## [Domain Area 2]
| Term | Definition | Aliases to avoid |
|------|-----------|-----------------|
| ... | ... | ... |
## Relationships
- An **Invoice** belongs to exactly one **Customer**
- An **Order** produces one or more **Invoices**
## Example Dialogue
> **Dev:** "When a **Customer** places an **Order**, do we create the **Invoice** immediately?"
> **Domain expert:** "No — an **Invoice** is only generated once a **Fulfillment** is confirmed."
## Flagged Ambiguities
- "account" was used to mean both **Customer** and **User** — these are distinct concepts
After writing, state:
I've written/updated
.flux/brain/business/glossary.md. From this point forward I will use these terms consistently. If I drift from this language or you notice a term that should be added, let me know.
When invoked again:
.flux/brain/business/glossary.mdALWAYS run at the very end of /flux:ubiquitous-language execution:
PLUGIN_ROOT="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}}"
[ ! -d "$PLUGIN_ROOT/scripts" ] && PLUGIN_ROOT=$(ls -td ~/.claude/plugins/cache/nairon-flux/flux/*/ 2>/dev/null | head -1)
UPDATE_JSON=$("$PLUGIN_ROOT/scripts/version-check.sh" 2>/dev/null || echo '{"update_available":false}')
UPDATE_AVAILABLE=$(echo "$UPDATE_JSON" | jq -r '.update_available')
LOCAL_VER=$(echo "$UPDATE_JSON" | jq -r '.local_version')
REMOTE_VER=$(echo "$UPDATE_JSON" | jq -r '.remote_version')
If update available, append to output:
---
Flux update available: v${LOCAL_VER} → v${REMOTE_VER}
Update Flux from the same source you installed it from, then restart your agent session.
---
If no update: Show nothing (silent).
.flux/brain/business/glossary.md, not a standalone file. This integrates with flux-propose and other skills that read business context..flux/brain/business/ doesn't exist yet, create it.