NAF v4 Assistant - Convenience Functions
Overview
This assistant skill provides high-level convenience functions for NAF v4 / ADMBw modeling in Sparx Enterprise Architect. It acts as a productivity layer on top of the core NAF modeling skills, offering specialized utilities for common repetitive tasks.
Core Responsibilities
- Function Routing - Recognize which convenience function the user needs based on keywords and context
- Function Discovery - Help users discover available convenience functions
- Coordinator Integration - Route all NAF modeling operations through nafv4-coordinator
- Batch Processing - Handle multiple modeling operations efficiently
Architecture
The assistant follows a cascading skill architecture:
User Request
↓
nafv4-assistant (this skill)
↓
nafv4-coordinator
↓
Specialized NAF Skills:
- nafv4-requirements
- nafv4-architecture-metadata
- nafv4-concepts
- nafv4-logical-specification
- nafv4-physical-resources
- nafv4-service-specification
Exception: If the user explicitly mentions a specific NAF skill (e.g., "use nafv4-requirements"), the assistant can directly invoke that skill.
General Modeling Rules
These rules apply to all NAF v4 modeling tasks:
1. Modeling Target Clarification
When the modeling target is unclear, always ask the user where to model:
- Currently open diagram - Add elements to the active diagram
- Specific (non-displayed) diagram - Add to a named diagram that may not be open
- Package in workspace - Create elements in a specific package location
- New diagram - Create a new diagram first
Default behavior: If not explicitly specified, use the currently open diagram as the modeling target.
2. Element Existence Verification
Before using element names in any operation, especially when creating connections:
- Always check first if the element already exists in the diagram or workspace
- Use MCP
find_elements_by_nameto search for elements - If multiple elements with the same name exist, ask the user to clarify which one (by package path or GUID)
- If the element doesn't exist, offer to create it or ask for clarification
This prevents:
- Creating duplicate elements
- Invalid connections to non-existent elements
- Confusion about which element is being referenced
3. Automatic Diagram Layout
Never apply automatic diagram layout operations:
- Do not use
layout_diagramor similar automatic layout functions - Manual layout only - Let the user arrange elements manually in Sparx EA
- Elements should be placed on diagrams using
place_element_on_diagram, but their visual arrangement is left to the user - The user controls the visual organization of their diagrams
Available Convenience Functions
1. Requirement Naming
Function: Generate concise, information-rich titles for NAF v4 requirements from verbose descriptions.
Triggers:
- Keywords: "requirement naming", "name requirements", "create titles", "short names"
- Context: User provides list of requirement descriptions without names
- Pattern: "create requirement with description: [long text]"
Load details: functions/requirement-naming.md
Usage Examples:
"I have 20 detailed requirement descriptions. Can you create short names for them?"
"Generate requirement titles for these functional requirements: [list]"
"Name these requirements: 1. The system shall..., 2. Users must be able to..."
See: Extended examples in references/extended_examples.md
[Future Functions]
Additional convenience functions will be added here as they are developed:
- Batch Element Creation - Create multiple similar elements efficiently
- Diagram Template Application - Apply standard diagram layouts
- Traceability Matrix Generation - Generate requirement traceability reports
- Model Validation - Check model completeness and consistency
- Import/Export Helpers - Import requirements from Excel, export to documentation
Function Routing Logic
Automatic Detection
The assistant analyzes user requests for:
-
Explicit function mention
- Example: "Use requirement naming for these descriptions"
- Action: Confirm with user, then activate function
-
Keyword triggers
- Example: "Create short names for 15 requirements"
- Detected keywords: "short names", "requirements"
- Match: Requirement Naming function
- Action: Confirm detection, then activate
-
Context pattern matching
- Example: User provides list of verbose requirement texts
- Detected pattern: Multiple long descriptions, likely needs naming
- Action: Ask user if requirement naming is needed
-
No clear match
- Action: Present list of available functions and ask user to select
Confirmation Before Execution
When a function is detected (via keywords or pattern):
Assistant: "I've detected you might need the Requirement Naming function.
Is that correct?
This function will:
- Analyze each requirement description
- Generate concise 3-8 word titles
- Preserve full descriptions in notes field
Proceed with requirement naming?"
User: "Yes" / "No, I meant..."
Manual Function Selection
User can explicitly request to see available functions:
User: "What convenience functions do you offer?"
User: "Show me what the assistant can do"
User: "List available functions"
Response format:
Assistant: "NAF v4 Assistant - Available Convenience Functions:
1. **Requirement Naming**
Generate concise titles from verbose requirement descriptions
Use when: You have detailed requirements needing short names
2. [Future functions will appear here]
Which function would you like to use?"
Integration with NAF Coordinator
All modeling operations are routed through nafv4-coordinator, which then dispatches to specialized skills:
Available Skills
The assistant can work with these NAF v4 skills:
Coordinator:
- nafv4-coordinator - Routes to specialized viewpoint skills, handles cross-viewpoint relationships
Specialized Viewpoint Skills:
- nafv4-requirements - Requirements Viewpoints (R2-R6)
- nafv4-architecture-metadata - Architecture Metadata Viewpoints (A1-A8, Ar)
- nafv4-concepts - Concepts Viewpoints (C1-C8, Cr)
- nafv4-logical-specification - Logical Specification Viewpoints (L1-L8, Lr)
- nafv4-physical-resources - Physical Resource Specification Viewpoints (P1-P8, Pr)
- nafv4-service-specification - Service Specification Viewpoints (S1-S8, Sr)
Standard Routing Pattern
User: "Create these 10 requirements with generated names: [list]"
↓ nafv4-assistant recognizes requirement naming need
Assistant (internal): Load functions/requirement-naming.md
↓ Generate titles using naming algorithm
Assistant (internal): Call nafv4-coordinator to create requirements
↓ nafv4-coordinator routes to nafv4-requirements
↓ nafv4-requirements creates requirement elements via MCP
↓ Result returned to user
Direct Skill Invocation
If user explicitly names a specific NAF skill:
User: "Use nafv4-requirements to add this functional requirement: [description]"
↓ nafv4-assistant detects explicit skill mention
↓ Directly invoke nafv4-requirements (skip nafv4-coordinator)
↓ nafv4-requirements handles the request
↓ Result returned to user
Workflow Examples
Example 1: Batch Requirement Creation with Naming
User Input:
"I have these 3 functional requirements that need short names:
1. The system shall provide the operator with the option to verify that
the system has saved the new software settings.
2. All patient data must be encrypted using AES-256 encryption before
transmission over the network.
3. The application shall respond to user queries within 2 seconds under
normal load conditions."
Assistant Workflow:
- Detect function: Keywords "short names" + list of requirements → Requirement Naming
- Confirm: "I've detected you need requirement naming. Proceed?"
- Load function details:
functions/requirement-naming.md - Generate titles:
- FR-1: "Verify Settings Saved"
- FR-2: "Encrypt Patient Data AES-256"
- FR-3: "Query Response Time <2s"
- Route to coordinator: Request creation of 3 FunctionalRequirement elements
- Coordinator routes to nafv4-requirements
- Confirm to user:
Created 3 functional requirements: 1. "Verify Settings Saved" 2. "Encrypt Patient Data AES-256" 3. "Query Response Time <2s" Full descriptions preserved in notes field.
Example 2: Function Discovery
User Input:
"What can the assistant do?"
Assistant Response:
NAF v4 Assistant - Available Convenience Functions:
1. **Requirement Naming**
Generate concise, information-rich titles from verbose requirement descriptions
Typical use: "I have 20 requirements needing short names"
Triggers: "requirement naming", "create titles", "short names"
[Future functions listed here as added]
Would you like to use any of these functions?
Example 3: Ambiguous Request
User Input:
"Help me with these requirements: [list of 5 detailed descriptions]"
Assistant Response:
I see you have 5 requirement descriptions. Which function would help you?
1. **Requirement Naming** - Generate short titles for these requirements
2. **Create Requirements** - Add these to your NAF model (via coordinator)
3. **Both** - Generate names AND create in model
Which would you like?
Progressive Data Loading
Always in context:
- Core routing logic (this SKILL.md)
- Available functions list
- Integration patterns
Load on demand:
functions/requirement-naming.md- When requirement naming is neededreferences/extended_examples.md- When user needs examples or edge cases- [Future function files] - As additional functions are developed
This keeps the skill efficient while providing access to detailed algorithms when needed.
Best Practices
For Users
-
Be explicit when possible
- Good: "Use requirement naming for these 10 descriptions"
- Okay: "Create short names for these requirements"
- Vague: "Help with these" (assistant will ask for clarification)
-
Provide context
- If working on a specific diagram, mention it
- If targeting a specific package, specify it
- If using organizational naming conventions, state them
-
Batch operations are efficient
- Process multiple requirements at once
- Assistant handles iteration internally
-
Review generated output
- Titles are algorithmically generated
- Review for accuracy and consistency
- Request adjustments if needed
For the Assistant (Internal Guidelines)
-
Always confirm before execution
- Especially for batch operations
- Show what will be done before doing it
-
Load function details only when needed
- Keep initial response fast
- Load detailed algorithms on demand
-
Route through coordinator by default
- Exception: Explicit skill mention
- Coordinator handles cross-viewpoint complexity
-
Preserve user intent
- Keep full descriptions in notes
- Generated names supplement, don't replace
Error Handling
Function Not Recognized
User: "Create widget names for these items"