Capabilities
Define what actions visitors and agents can perform using simple string-based syntax.
Overview
Capabilities in Aexol are defined using either unquoted identifiers (single word) or quoted strings (multi-word). This flexible approach makes it easy to specify what actors can do in your system.
Syntax
// Unquoted capabilities (single word, camelCase recommended)
visitor {
browse
search
viewDetails
}
// Quoted capabilities (multi-word or with spaces)
visitor {
"browse products"
"view product details"
"add to cart"
}
// Mixed syntax (recommended)
visitor {
browse // unquoted for single word
search
"view product details" // quoted for multi-word
"add to cart"
}
agent AgentName {
processOrder
validateItems
"send confirmation email"
}
✨ Edit in StudioFor Visitors
Visitors use capabilities to define user journeys and available actions.
Basic Capabilities
visitor {
browseProducts
viewProductDetails
searchCatalog
}
✨ Edit in StudioNested Capabilities
Capabilities can be nested to show hierarchical relationships:
visitor {
login {
logged_in {
viewDashboard
manageProfile
logout
}
}
}
✨ Edit in StudioState Transitions
Nested blocks represent state changes in user journeys:
visitor {
browse {
browsing {
searchProducts
filterResults
viewDetails {
viewing_product {
addToCart
readReviews
}
}
}
}
}
✨ Edit in StudioFor Agents
Agents use capabilities to define their autonomous actions.
Basic Agent Capabilities
agent OrderProcessor {
fetchOrder
validateItems
processPayment
sendConfirmation
}
✨ Edit in StudioAgent with Role Inheritance
agent AdminAgent: AdminRole {
manageUsers
viewAnalytics
configureSystem
}
✨ Edit in StudioCapability Naming Best Practices
Use Clear, Descriptive Actions
Good:
browseProductCatalogor"browse product catalog"submitOrderForProcessingor"submit order for processing"updateUserProfileor"update user profile"
Avoid:
doThingaction1x
Use Verb-First Naming
Start capabilities with action verbs:
visitor {
viewProducts // verb: view
addToCart // verb: add
completeCheckout // verb: complete
trackOrder // verb: track
}
✨ Edit in StudioGroup Related Actions
visitor {
# Shopping actions
browseProducts
searchCatalog
viewProductDetails
# Cart actions
addToCart
updateCart
removeFromCart
# Checkout actions
startCheckout
enterPayment
confirmOrder
}
✨ Edit in StudioReal-World Examples
E-Commerce Platform
visitor {
viewLandingPage
browseProducts
searchCatalog
viewProductDetails
register {
registering {
fillRegistrationForm
verifyEmail
}
}
login {
logged_in {
addToCart
viewCart
checkout {
checking_out {
enterShippingInfo
selectPaymentMethod
applyCoupon
placeOrder
}
}
viewOrders
trackShipments
manageProfile
logout
}
}
}
✨ Edit in StudioContent Management System
visitor {
readArticles
browseCategories
searchContent
login {
logged_in {
createArticle {
editing {
writeContent
addImages
preview
publish
}
}
manageArticles
viewAnalytics
}
}
}
agent ContentModerator {
reviewSubmittedContent
approveContent
rejectViolations
notifyAuthors
}
✨ Edit in StudioSaaS Application
visitor {
viewLandingPage
exploreFeatures
viewPricing
signup {
onboarding {
choosePlan
createAccount
completeSetup
}
}
login {
authenticated {
accessDashboard
useCoreFeatures
manageSettings
viewUsageStats
upgradePlan
logout
}
}
}
✨ Edit in StudioIntegration with Other Constructs
With Roles
Roles define permissions, while capabilities define actions:
role EditorRole {
permission articles {
create,
read,
update
}
}
visitor {
login {
logged_in {
createArticle // Uses EditorRole permissions
editArticle
viewArticles
}
}
}
✨ Edit in StudioWith Workflows
Capabilities can map to workflow state transitions:
workflow ArticleFlow {
state draft -> review
state review -> published, draft
state published -> archived
}
visitor {
login {
logged_in {
createDraft // -> draft state
submitForReview // draft -> review
publishArticle // review -> published
archiveArticle // published -> archived
}
}
}
✨ Edit in StudioSummary
- Use unquoted identifiers for single-word capabilities (e.g.,
browse,login) - Use quoted strings for multi-word capabilities (e.g.,
"add to cart") - Nest capabilities for hierarchical structures
- Use named blocks for state transitions
- Start with action verbs for clarity
- Group related actions together
Related Keywords
visitor- Define visitor capabilitiesagent- Define agent capabilitiesworkflow- Model state transitionsrole- Define permissions
Next Steps
- Learn about Visitors in detail
- Explore Agents for autonomous actions
- See Workflow Recipes for complete examples
