Execute qualquer Skill no Manus
com um clique
com um clique
Execute qualquer Skill no Manus com um clique
Começar$pwd:
$ git log --oneline --stat
stars:70
forks:55
updated:26 de janeiro de 2026 às 18:43
SKILL.md
Require relevant tests and documentation updates for any code or config change, and report what was run.
Create or update evaluation scenarios for the tests/evaluation framework, including session-based scenarios and A/B comparisons
Guide azd-based deployments, including where azure.yaml and azd hook scripts live, the current deployment flow, troubleshooting docs, and regional/model availability checks for Azure OpenAI
Add a new React component with Material UI
Add a new FastAPI endpoint to the API
Add a handler for a new WebSocket message type
| name | add-voice-handler |
| description | Add a new voice handler or feature to the voice module |
Add new voice features to apps/artagent/backend/voice/.
"""
Voice Feature Module
====================
Brief description of the voice feature.
"""
from __future__ import annotations
from typing import TYPE_CHECKING
from apps.artagent.backend.voice.shared.context import VoiceSessionContext, TransportType
from apps.artagent.backend.voice.shared.handoff_service import HandoffService
from apps.artagent.backend.voice.shared.metrics_factory import LazyMeter, build_session_attributes
from utils.ml_logging import get_logger
if TYPE_CHECKING:
from azure.cognitiveservices.speech import SpeechConfig
logger = get_logger(__name__)
# Lazy metrics
_meter = LazyMeter("voice.my_feature", version="1.0.0")
_latency = _meter.histogram(
name="voice.my_feature.latency",
description="Feature latency",
unit="ms",
)
async def handle_my_feature(
context: VoiceSessionContext,
data: bytes,
) -> None:
"""
Handle voice feature.
Args:
context: Voice session context (use instead of websocket.state)
data: Input data to process
"""
# Transport-aware processing
if context.transport_type == TransportType.BROWSER:
sample_rate = 48000
elif context.transport_type == TransportType.ACS:
sample_rate = 16000
else:
sample_rate = 24000 # VoiceLive
# Process and record metrics
attrs = build_session_attributes(context.session_id)
_latency.record(latency_ms, attributes=attrs)
voice/ or appropriate subdirectoryVoiceSessionContext instead of websocket.statevoice. prefixfrom apps.artagent.backend.voice.shared.context import VoiceSessionContext
context = VoiceSessionContext.from_websocket(websocket)
session_id = context.session_id
transport = context.transport_type
from apps.artagent.backend.voice.tts import TTSPlayback
tts = TTSPlayback(context)
await tts.speak(text) # Auto-routes to browser/ACS/VoiceLive
from apps.artagent.backend.voice.shared.handoff_service import HandoffService
handoff_service = HandoffService(
scenario_name=scenario_name,
handoff_map=handoff_map,
agents=agents,
memo_manager=memo_manager,
)
resolution = handoff_service.resolve_handoff(from_agent, to_agent)
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from azure.cognitiveservices.speech import SpeechConfig
def create_speech_config() -> "SpeechConfig":
from azure.cognitiveservices.speech import SpeechConfig
return SpeechConfig(...)
VoiceSessionContext instead of websocket.stateTTSPlayback for audio outputLazyMeter pattern for metricsvoice. prefixSee voice-module.instructions.md for full patterns and contracts.