teams-api-2-adaptive-cards
Sub-skill of teams-api: 2. Adaptive Cards.
Best use case
teams-api-2-adaptive-cards is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Sub-skill of teams-api: 2. Adaptive Cards.
Teams using teams-api-2-adaptive-cards should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/2-adaptive-cards/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How teams-api-2-adaptive-cards Compares
| Feature / Agent | teams-api-2-adaptive-cards | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Sub-skill of teams-api: 2. Adaptive Cards.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 2. Adaptive Cards
## 2. Adaptive Cards
```python
# adaptive_cards.py
# ABOUTME: Adaptive Card construction for rich Teams messages
# ABOUTME: Interactive cards with actions and data binding
from typing import Dict, List, Optional, Any
import json
class AdaptiveCardBuilder:
"""Builder for Adaptive Cards"""
def __init__(self, version: str = "1.4"):
self.card = {
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": version,
"body": [],
"actions": []
}
def add_text_block(
self,
text: str,
size: str = "default",
weight: str = "default",
color: str = "default",
wrap: bool = True
):
"""Add a text block"""
self.card["body"].append({
"type": "TextBlock",
"text": text,
"size": size,
"weight": weight,
"color": color,
"wrap": wrap
})
return self
def add_fact_set(self, facts: Dict[str, str]):
"""Add a fact set (key-value pairs)"""
self.card["body"].append({
"type": "FactSet",
"facts": [
{"title": k, "value": v}
for k, v in facts.items()
]
})
return self
def add_column_set(self, columns: List[Dict]):
"""Add a column set for side-by-side content"""
self.card["body"].append({
"type": "ColumnSet",
"columns": columns
})
return self
def add_image(
self,
url: str,
size: str = "auto",
alt_text: str = ""
):
"""Add an image"""
self.card["body"].append({
"type": "Image",
"url": url,
"size": size,
"altText": alt_text
})
return self
def add_action_submit(
self,
title: str,
data: Dict[str, Any],
style: str = "default"
):
"""Add a submit action button"""
self.card["actions"].append({
"type": "Action.Submit",
"title": title,
"data": data,
"style": style
})
return self
def add_action_open_url(
self,
title: str,
url: str
):
"""Add an open URL action"""
self.card["actions"].append({
"type": "Action.OpenUrl",
"title": title,
"url": url
})
return self
def add_action_show_card(
self,
title: str,
card: Dict
):
"""Add a show card action (nested card)"""
self.card["actions"].append({
"type": "Action.ShowCard",
"title": title,
"card": card
})
return self
def add_input_text(
self,
id: str,
placeholder: str = "",
is_multiline: bool = False,
label: str = ""
):
"""Add a text input"""
input_element = {
"type": "Input.Text",
"id": id,
"placeholder": placeholder,
"isMultiline": is_multiline
}
if label:
input_element["label"] = label
self.card["body"].append(input_element)
return self
def add_input_choice_set(
self,
id: str,
choices: List[Dict[str, str]],
is_multi_select: bool = False,
style: str = "compact",
label: str = ""
):
"""Add a choice set (dropdown/radio)"""
input_element = {
"type": "Input.ChoiceSet",
"id": id,
"choices": choices,
"isMultiSelect": is_multi_select,
"style": style
}
if label:
input_element["label"] = label
self.card["body"].append(input_element)
return self
def add_container(
self,
items: List[Dict],
style: str = "default"
):
"""Add a container for grouping elements"""
self.card["body"].append({
"type": "Container",
"items": items,
"style": style
})
return self
def build(self) -> Dict:
"""Build and return the card"""
return self.card
def to_json(self) -> str:
"""Return card as JSON string"""
return json.dumps(self.card, indent=2)
def create_deployment_card(
app_name: str,
environment: str,
version: str,
status: str,
details: Dict[str, str],
action_url: str
) -> Dict:
"""Create a deployment notification card"""
*Content truncated — see parent skill for full reference.*Related Skills
teams-meeting-pipeline
Operate the Teams meeting summary pipeline via Hermes CLI — summarize meetings, inspect pipeline status, replay jobs, manage Microsoft Graph subscriptions.
agent-teams-workspace-work-profile-updated-2026-03-10
Sub-skill of agent-teams: Workspace Work Profile (Updated 2026-03-10).
agent-teams-work-queue-integration
Sub-skill of agent-teams: Work Queue Integration.
agent-teams-subagent-startup-convention
Sub-skill of agent-teams: Subagent startup convention (+2).
agent-teams-idle-state
Sub-skill of agent-teams: Idle State.
agent-teams-dm-default-always-prefer
Sub-skill of agent-teams: DM (default — always prefer) (+2).
agent-teams-decision-matrix-team-vs-sequential
Sub-skill of agent-teams: Decision Matrix: Team vs Sequential.
agent-teams-core-constraint
Sub-skill of agent-teams: Core Constraint.
agent-teams-agent-types-for-common-tasks
Sub-skill of agent-teams: Agent Types for Common Tasks.
agent-teams-activation
Sub-skill of agent-teams: Activation.
agent-teams-1-create-team
Sub-skill of agent-teams: 1. Create team (+5).
trello-api-cards-by-list
Sub-skill of trello-api: Cards by List.