teams-api-2-adaptive-cards

Sub-skill of teams-api: 2. Adaptive Cards.

5 stars

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

$curl -o ~/.claude/skills/2-adaptive-cards/SKILL.md --create-dirs "https://raw.githubusercontent.com/vamseeachanta/workspace-hub/main/.agents/skills/_archive/business/communication/teams-api/2-adaptive-cards/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/2-adaptive-cards/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How teams-api-2-adaptive-cards Compares

Feature / Agentteams-api-2-adaptive-cardsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

5
from vamseeachanta/workspace-hub

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

5
from vamseeachanta/workspace-hub

Sub-skill of agent-teams: Workspace Work Profile (Updated 2026-03-10).

agent-teams-work-queue-integration

5
from vamseeachanta/workspace-hub

Sub-skill of agent-teams: Work Queue Integration.

agent-teams-subagent-startup-convention

5
from vamseeachanta/workspace-hub

Sub-skill of agent-teams: Subagent startup convention (+2).

agent-teams-idle-state

5
from vamseeachanta/workspace-hub

Sub-skill of agent-teams: Idle State.

agent-teams-dm-default-always-prefer

5
from vamseeachanta/workspace-hub

Sub-skill of agent-teams: DM (default — always prefer) (+2).

agent-teams-decision-matrix-team-vs-sequential

5
from vamseeachanta/workspace-hub

Sub-skill of agent-teams: Decision Matrix: Team vs Sequential.

agent-teams-core-constraint

5
from vamseeachanta/workspace-hub

Sub-skill of agent-teams: Core Constraint.

agent-teams-agent-types-for-common-tasks

5
from vamseeachanta/workspace-hub

Sub-skill of agent-teams: Agent Types for Common Tasks.

agent-teams-activation

5
from vamseeachanta/workspace-hub

Sub-skill of agent-teams: Activation.

agent-teams-1-create-team

5
from vamseeachanta/workspace-hub

Sub-skill of agent-teams: 1. Create team (+5).

trello-api-cards-by-list

5
from vamseeachanta/workspace-hub

Sub-skill of trello-api: Cards by List.