Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add ccheney/robust-skills --skill teams-adaptive-cardsgit clone --depth 1 https://github.com/ccheney/robust-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ccheney/robust-skills/teams-adaptive-cards)<a href="https://agentmods.dev/skills/ccheney/robust-skills/teams-adaptive-cards"><img src="https://agentmods.dev/badge/skills/ccheney/robust-skills/teams-adaptive-cards/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ccheney/robust-skills/teams-adaptive-cards"><img src="https://agentmods.dev/badge/skills/ccheney/robust-skills/teams-adaptive-cards.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00060 | $0.00821 |
| Opus 5.5 | $0.00024 | $0.00328 |
| Sonnet 5.5 | $0.00012 | $0.00164 |
| Haiku 4.5 | $0.00006 | $0.00082 |
Grade A, and why
teams-adaptive-cards scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 54 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Teams Adaptive Cards
Build the requested card for its actual Teams transport and client capabilities. The user's explicit instructions take precedence over this skill's guidelines.
Select the transport
Use the requested content/actions, delivery code or payload, and target clients as input. A card's JSON and its delivery wrapper are separate contracts.
| Transport | Required shape |
|---|---|
| Bot / Teams SDK | Activity attachments[], card content as an object |
| Workflows webhook | { "type": "message", "attachments": [...] } |
| Graph chatMessage | HTML attachment placeholder with matching ID; attachment content as a JSON string |
| Message extension | Attachment and preview appropriate to the extension type |
If delivery is unspecified, a raw card can be prepared while clarifying the transport. Do not invent a webhook URL, recipient, or bot backend. An approval/form needs a transport that handles its actions; a notification webhook is not a bot.
Match capabilities
The references use a Teams baseline of card versions through 1.5, with 1.2 as a conservative mobile fallback. Select the minimum version needed by the requested elements and verify current host support when newer features matter. A schema version alone does not guarantee a Teams client renders an element.
Use card elements for layout: TextBlock, FactSet, Table, inputs, and actions as appropriate. TextBlock Markdown is limited; HTML, Markdown tables, and code fences are not substitutes for supported card elements. Provide wrapping, meaningful fallback text, and consistent mention metadata.
References
Load only the transport, element, or interaction needed.
| Task | Reference |
|---|---|
| Delivery path, bots, message extensions | SURFACES.md |
| Inputs, tables, code, charts, people picker | ELEMENTS.md |
| Submit/Execute, refresh, user-specific views | ACTIONS.md |
| Webhook notifications or requested connector migration | WEBHOOKS-WORKFLOWS.md |
| Graph attachment IDs, encoding, permissions | GRAPH-ATTACHMENTS.md |
| Width, mobile layout, accessibility | RESPONSIVE-DESIGN.md |
| Compact wrapper/version/limit lookup | CHEATSHEET.md |
What ships with it
9 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- agents/openai.yaml 259 B
- references/ACTIONS.md 7.1 KB
- references/CHEATSHEET.md 6.3 KB
- references/ELEMENTS.md 9.3 KB
- references/GRAPH-ATTACHMENTS.md 4.7 KB
- references/RESPONSIVE-DESIGN.md 5.3 KB
- references/SURFACES.md 6.2 KB
- references/WEBHOOKS-WORKFLOWS.md 6.2 KB
- scripts/check-teams-card.mjs 18 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · -189 lines · -82 tokens per session d913f94fb23c
- 2mo ago First seen · 243 lines · 142 tokens per session scan A b99720fdc67e
teams-adaptive-cards is a skill published in the GitHub repository ccheney/robust-skills (61 stars, last pushed 1mo ago), licensed MIT. It adds 60 tokens to every session and 821 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
workflow-branch-sync
Sync the current branch with the default branch via rimba or git, then resolve conflicts file by file with a per-hunk rationale and a keep-mine / keep-main / manual recommendation before staging. Push only happens after explicit confirmation — never automatic.
workflow-cleanup-merged
Use after a PR has been merged on GitHub to remove the local worktree, delete the local branch, delete the remote branch, and fast-forward local main — safely, with squash-merge support.
workflow-pr-review
Use when reviewing a remote GitHub PR — a first-pass peer review, or a followup re-check after the owner has addressed feedback. Fetches into an ephemeral worktree, runs the reviewer agent against the updated diff with a Review Decision footer instruction, deduplicates findings against existing review threads (±5-line…
workflow-address-feedback
Use when a PR owner wants to address review feedback — fetches outstanding threads and general comments, presents a per-item triage (ADDRESSED / CLARIFIED / DEFERRED), applies fixes via the Edit tool, commits via workflow-commit-and-pr, resolves review threads via GraphQL resolveReviewThread (those without a thread…
workflow-commit-and-pr
Use when the user wants to commit staged changes or create a PR — enforces trigger-phrase discipline (preview vs commit vs ship), the [type] commit format, branch-naming check, draft-vs-ready PR prompt, and PR template detection. Pre-merge counterpart to workflow-cleanup-merged.
workflow-development
Development workflow — full lifecycle from Branch → Implement → Verify → Review → Deliver. Activated by /swe-workbench:implement, /swe-workbench:design, /swe-workbench:refactor, /swe-workbench:debug, /swe-workbench:test, /swe-workbench:architect, /swe-workbench:migrate, and /swe-workbench:document when the plan being…