meta:
id: com.example.my-dash # reverse-domain ID (lowercase, dots & hyphens only)
name: My Dash # display name (max 64 chars)
version: 1.0.0 # semver MAJOR.MINOR.PATCH
category: utility # utility|communication|productivity|entertainment|
# health|finance|travel|social|smart_home|education|food|sports
keywords: [keyword1, keyword2] # 1–20 search keywords (include Korean + English)
icon: res/drawable/ic_my_dash.png # drawable resource path
author: developer@example.com # author name or email
description: |
Brief description for Dash Store listing.
Triggers: keyword1, keyword2, ...
Do NOT use for: [specify exclusions]
min_api: 26 # minimum Android API (default: 26)
trigger:
conditions:
- type: always # activate whenever conditions permit
# - type: time # time-of-day window
# start: "07:00" # HH:MM 24h
# end: "09:00"
# days: [1,2,3,4,5] # 1=Mon...7=Sun (omit for every day)
# - type: location # geographic region
# lat: 37.5665
# lon: 126.9780
# radius_m: 500
# name: Gwanghwamun
# - type: topic_match # activated by P2P bus messages
# topics:
# - schedule.new
# - location.change
# - type: orchestrator_call # keyword-based Orchestrator activation
# keywords: [keyword1, keyword2]
# confidence: 0.8 # minimum confidence score (default: 0.8)
skin:
sizes: [mini, standard] # mini | standard | expanded (at least one)
theme_aware: true # adapt to dark/light system theme
composable_entry: MyDashSkin # root @Composable function name (PascalCase)
default_size: standard # initial placement size
# Optional aspect ratio hints (W:H in grid units)
# aspect_ratio:
# mini: "2:1"
# standard: "2:2"
# expanded: "4:3"
skill:
entry: MyDashSkill # DashSkill implementation class name (PascalCase)
permissions: [] # network|location_coarse|location_fine|contacts|calendar|
# camera|microphone|storage_read|storage_write|notifications|
# phone_state|sms|bluetooth|nfc|biometric|health
local_state: false # true = uses Room DB for persistent state
allowed_apis: [] # weather_api|location_service|calendar_service|contacts_service|
# notification_service|audio_service|sensor_service|
# network_service|storage_service|camera_service|
# media_service|health_service|payment_service|
# nfc_service|bluetooth_service|claude_api
# Optional resource quotas (Orchestrator enforces these)
# quota:
# memory_mb: 32 # default 32 MB
# network_kb_per_min: 512 # default 512 KB/min (0 = offline-only)
# cpu_percent: 10 # default 10%
protocol:
publish: [] # topics this Dash publishes
# - topic: my.topic.name # dot-separated namespace (lowercase)
# schema: MyData.v1 # schema name from shared registry
subscribe: [] # topics this Dash subscribes to
# - topic: other.topic.name
# schema: OtherData.v1
fusible_with: [] # category IDs or Dash IDs this can Fuse with
imports: [] # schema files from shared registry
# - schemas/MyData.v1.json
// [topic name] message schema{
"field": "type"
}