From nacl
Full BA model creation in Neo4j via 10-phase orchestration. Chains all nacl-ba-* skills sequentially with user confirmation gates.Use when: create complete BA model with graph, full business analysis, or the user says "/nacl:ba-full".
How this skill is triggered — by the user, by Claude, or both
Slash command
/nacl:ba-fullopusThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create a complete business model (BA specification) stored as a Neo4j graph through sequential invocation of 10 specialized graph skills. Each skill writes nodes and relationships to Neo4j --- no markdown files are produced (except at the optional publish phase). The result is a fully connected graph of processes, workflows, entities, roles, rules, and glossary terms, validated for internal con...
Create a complete business model (BA specification) stored as a Neo4j graph through sequential invocation of 10 specialized graph skills. Each skill writes nodes and relationships to Neo4j --- no markdown files are produced (except at the optional publish phase). The result is a fully connected graph of processes, workflows, entities, roles, rules, and glossary terms, validated for internal consistency and ready for SA handoff.
The orchestration pattern is identical; only the storage backend changes (Neo4j graph instead of docs/ files).
nacl-ba-full is an orchestrator that manages invocation of specialized graph BA agents in the correct order. It does NOT execute phases itself --- it delegates each phase to a dedicated skill via a Task agent (sub-agent with isolated context).
Key principle: facts come from the user, construction is done by the agent, confirmation is done by the user (same autonomy principle as ba-full).
Each phase is executed via a Task agent (sub-agent with separate context --- Tool: Task). This is critical: each phase generates substantial graph writes, and running them inline would exhaust L0 context by Phase 3-4.
Pattern for each phase:
Launch Task agent: /nacl-ba-[skill] [mode]If a phase fails:
L0 does only: queries graph for resume state, launches Task agents, shows gates, tracks progress. L0 does NOT: read source documents, generate graph data, run Cypher writes --- all of this is done by Task agents.
+--------------+ +--------------+ +--------------+
| Phase 1 | | Phase 2 | | Phase 3 |
| nacl-ba- | | nacl-ba- | | nacl-ba- |
| context |--->| process |--->| workflow |
| (scope) | | (map) | | (per BP) |
+--------------+ +--------------+ +--------------+
|
+----------------------------------------+
v
+--------------+ +--------------+ +--------------+
| Phase 4 | | Phase 5 | | Phase 6 |
| nacl-ba- | | nacl-ba- | | nacl-ba- |
| entities |--->| roles |--->| glossary |
| (catalog) | | (matrix) | | (language) |
+--------------+ +--------------+ +--------------+
|
+----------------------------------------+
v
+--------------+ +--------------+ +--------------+
| Phase 7 | | Phase 8 | | Phase 9 |
| nacl-ba- | | nacl-ba- | | nacl-ba- |
| rules |--->| validate |--->| handoff |
| (rules) | | (L1-L8) | | (BA->SA) |
+--------------+ +--------------+ +--------------+
|
+----------------------------------------+
v
+--------------+
| Phase 10 |
| nacl-publish|
| (optional) |
+--------------+
Each phase ends with user confirmation before proceeding to the next.
| Tool | Purpose |
|---|---|
mcp__neo4j__read-cypher | Read-only queries (resume detection, progress checks) |
mcp__neo4j__write-cypher | Not used by L0 directly --- all writes delegated to Task agents |
mcp__neo4j__get-schema | Schema introspection if needed |
Connection details are in ${CLAUDE_PLUGIN_ROOT}/nacl-core/SKILL.md.
When starting, query the graph to detect which phases have already been completed. This allows resuming an interrupted orchestration without re-running completed phases.
// Phase 1: SystemContext exists?
OPTIONAL MATCH (sc:SystemContext)
WITH count(sc) > 0 AS phase1
// Phase 2: ProcessGroup / BusinessProcess exist?
OPTIONAL MATCH (gpr:ProcessGroup)
OPTIONAL MATCH (bp:BusinessProcess)
WITH phase1,
count(gpr) > 0 AS phase2
// Phase 3: WorkflowStep exists?
OPTIONAL MATCH (ws:WorkflowStep)
WITH phase1, phase2,
count(ws) > 0 AS phase3
// Phase 4: BusinessEntity exists?
OPTIONAL MATCH (be:BusinessEntity)
WITH phase1, phase2, phase3,
count(be) > 0 AS phase4
// Phase 5: BusinessRole exists?
OPTIONAL MATCH (br:BusinessRole)
WITH phase1, phase2, phase3, phase4,
count(br) > 0 AS phase5
// Phase 6: GlossaryTerm exists?
OPTIONAL MATCH (gt:GlossaryTerm)
WITH phase1, phase2, phase3, phase4, phase5,
count(gt) > 0 AS phase6
// Phase 7: BusinessRule exists?
OPTIONAL MATCH (brq:BusinessRule)
WITH phase1, phase2, phase3, phase4, phase5, phase6,
count(brq) > 0 AS phase7
// Phase 8: ValidationReport exists?
OPTIONAL MATCH (vr:ValidationReport)
WITH phase1, phase2, phase3, phase4, phase5, phase6, phase7,
count(vr) > 0 AS phase8
// Phase 9: HandoffPackage exists?
OPTIONAL MATCH (hp:HandoffPackage)
WITH phase1, phase2, phase3, phase4, phase5, phase6, phase7, phase8,
count(hp) > 0 AS phase9
RETURN phase1, phase2, phase3, phase4, phase5, phase6, phase7, phase8, phase9
Resume logic:
falseGraph resume detection:
- Phase 1 (context): DONE
- Phase 2 (process): DONE
- Phase 3 (workflow): DONE
- Phase 4 (entities): NOT STARTED <-- resuming here
- Phase 5-10: NOT STARTED
Continue from Phase 4?
Phase 3 special case: If Phase 3 is partially complete (some BPs have workflows, others do not), detect which BPs still need workflows:
MATCH (bp:BusinessProcess {has_decomposition: true})
WHERE NOT (bp)-[:HAS_WORKFLOW_STEP]->()
RETURN bp.id, bp.name
ORDER BY bp.id
Resume Phase 3 from the first BP without workflow steps.
/nacl:ba-contextLaunch: Launch Task agent: /nacl:ba-context full
What it does:
Graph nodes created:
SystemContext (SYS-NNN)Stakeholder (STK-NN)ExternalEntity (EXT-NN)DataFlow (DFL-NNN)Transition: After user confirms scope and context diagram -> Phase 2
/nacl:ba-processLaunch: Launch Task agent: /nacl:ba-process full
What it does:
Graph nodes created:
ProcessGroup (GPR-NN)BusinessProcess (BP-NNN)CONTAINS, TRIGGERS, DEPENDS_ONTransition: After user confirms process map -> Phase 3
/nacl:ba-workflow (per BP with has_decomposition=true)Launch: For each BP with has_decomposition: true --- a separate Task agent (sequentially):
Launch Task agent: /nacl:ba-workflow BP-{NNN}
Wait for completion and user confirmation -> next BP.
Discovery query:
MATCH (bp:BusinessProcess {has_decomposition: true})
RETURN bp.id, bp.name
ORDER BY bp.id
What it does (per BP):
Graph nodes created (per BP):
WorkflowStep (BP-NNN-SNN)HAS_WORKFLOW_STEP, NEXT_STEP, HAS_ACTOR, HAS_ARTIFACT, HAS_DECISIONUser prompt (after each workflow):
Workflow for BP-{NNN} ({name}) created:
- {N} steps, {M} marked as "Automated"
- {K} business objects referenced
Confirm? (yes / adjust / skip)
Transition: After all workflows complete -> Phase 4
/nacl:ba-entitiesLaunch: Launch Task agent: /nacl:ba-entities full
What it does:
Graph nodes created:
BusinessEntity (OBJ-NNN)EntityAttribute (OBJ-NNN-ANN)EntityState (OBJ-NNN-STNN)HAS_ATTRIBUTE, HAS_STATE, REFERENCES, PRODUCES, CONSUMESTransition: After user confirms entity catalog and matrix -> Phase 5
/nacl:ba-rolesLaunch: Launch Task agent: /nacl:ba-roles full
What it does:
Graph nodes created:
BusinessRole (ROL-NN)HAS_ROLE, PERFORMS, OWNSTransition: After user confirms role registry and matrix -> Phase 6
/nacl:ba-glossaryLaunch: Launch Task agent: /nacl:ba-glossary full
What it does:
Graph nodes created:
GlossaryTerm (GLO-NNN)DEFINES_TERM, SYNONYM_OFTransition: After user confirms glossary -> Phase 7
/nacl:ba-rulesLaunch: Launch Task agent: /nacl:ba-rules full
What it does:
Graph nodes created:
BusinessRule (BRQ-NNN)HAS_RULE, APPLIES_TO, CONSTRAINSTransition: After user confirms rules catalog -> Phase 8
/nacl:ba-validateLaunch: Launch Task agent: /nacl:ba-validate internal
What it does:
Graph nodes created:
ValidationReport with validation resultsOn errors:
Transition: After validation passes (0 critical errors) -> Phase 9
/nacl:ba-handoffLaunch: Launch Task agent: /nacl:ba-handoff full
What it does:
Graph nodes created:
HandoffPackage with traceability dataTRACES_TO (BA->SA traceability links)Transition: After user confirms traceability matrix -> Phase 10
/nacl:publishLaunch: Launch Task agent: /nacl:publish docmost
Condition: User confirms they want to publish.
User prompt:
BA model is complete in Neo4j graph.
Publish to Docmost?
1. Yes, publish to Docmost (/nacl:publish docmost)
2. No, finish without publishing
What it does:
After each phase, show progress to the user:
=== nacl-ba-full Progress ===
[##########----------] 50%
- [x] Phase 1: Context (nacl-ba-context) --- scope defined, {N} external entities
- [x] Phase 2: Processes (nacl-ba-process) --- {N} groups, {M} processes
- [x] Phase 3: Workflows (nacl-ba-workflow) --- {K} workflows
- [x] Phase 4: Entities (nacl-ba-entities) --- {L} entities
- [x] Phase 5: Roles (nacl-ba-roles) --- {P} roles
- [ ] Phase 6: Glossary (nacl-ba-glossary) <- next
- [ ] Phase 7: Rules (nacl-ba-rules)
- [ ] Phase 8: Validate (nacl-ba-validate)
- [ ] Phase 9: Handoff (nacl-ba-handoff)
- [ ] Phase 10: Publish (nacl-publish) (optional)
Progress bar: [###---] where # = completed phases, - = remaining. Width = 20 chars. Percentage = completed / 10 * 100.
After each phase, present a gate to the user:
Phase {N} complete: {phase_name}
Summary:
- {key metric 1}
- {key metric 2}
Proceed to Phase {N+1}: {next_phase_name}? (yes / redo / stop)
If the user cannot answer all questions within a phase:
status: "assumption" where data was inferredUse this query to build the progress summary and final report:
OPTIONAL MATCH (sc:SystemContext) WITH count(sc) AS contexts
OPTIONAL MATCH (gpr:ProcessGroup) WITH contexts, count(gpr) AS groups
OPTIONAL MATCH (bp:BusinessProcess) WITH contexts, groups, count(bp) AS processes
OPTIONAL MATCH (ws:WorkflowStep) WITH contexts, groups, processes, count(ws) AS steps
OPTIONAL MATCH (be:BusinessEntity) WITH contexts, groups, processes, steps, count(be) AS entities
OPTIONAL MATCH (br:BusinessRole) WITH contexts, groups, processes, steps, entities, count(br) AS roles
OPTIONAL MATCH (gt:GlossaryTerm) WITH contexts, groups, processes, steps, entities, roles, count(gt) AS terms
OPTIONAL MATCH (brq:BusinessRule) WITH contexts, groups, processes, steps, entities, roles, terms, count(brq) AS rules
RETURN contexts, groups, processes, steps, entities, roles, terms, rules
After all phases (or when user stops):
=== nacl-ba-full Complete ===
[####################] 100%
BA model in Neo4j graph:
- {N} process groups, {M} business processes
- {K} workflows ({J} automated steps)
- {L} business entities
- {P} business roles
- {Q} glossary terms
- {R} business rules
- Validation: PASSED (0 critical errors)
- Traceability: {T} BA->SA trace links
Next steps:
1. /nacl:publish docmost --- publish graph to Docmost
2. /nacl:sa-full --- create SA specification from graph
3. Query the graph directly --- use mcp__neo4j__read-cypher
agent: nacl-ba-full
trigger: /nacl:ba-full
mode: orchestrator (delegates all work to Task agents)
reads:
- Neo4j: all BA node types (for resume detection only)
writes:
- Neo4j: none directly (all writes delegated to sub-agents)
creates_directories: [] # No file output --- graph only
calls:
- Phase 1: nacl-ba-context (Task agent)
- Phase 2: nacl-ba-process (Task agent)
- Phase 3: nacl-ba-workflow (Task agent, per BP)
- Phase 4: nacl-ba-entities (Task agent)
- Phase 5: nacl-ba-roles (Task agent)
- Phase 6: nacl-ba-glossary (Task agent)
- Phase 7: nacl-ba-rules (Task agent)
- Phase 8: nacl-ba-validate (Task agent)
- Phase 9: nacl-ba-handoff (Task agent)
- Phase 10: nacl-publish (Task agent, optional)
npx claudepluginhub itsalt/nacl --plugin naclGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Synthesizes the current conversation into a structured spec (PRD) and publishes it to the project issue tracker with a ready-for-agent label, without interviewing the user.