Code Design Rationale Investigator
cursor/plugins
Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.
Investigate Gram production health and post a digest to Slack
$ npx skills add speakeasy-api/gram --skill datadog-insights -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install speakeasy-api/gram datadog-insights --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/datadog-insights .claude/skills/datadog-insights && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "datadog-insights" agent skill from https://github.com/speakeasy-api/gram/tree/main/.claude/skills/datadog-insights into .claude/skills/datadog-insights/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "datadog-insights", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/speakeasy-api/gram/tree/main/.claude/skills/datadog-insightsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add speakeasy-api/gram --skill datadog-insights -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install speakeasy-api/gram datadog-insights --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/datadog-insights .agents/skills/datadog-insights && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "datadog-insights" agent skill from https://github.com/speakeasy-api/gram/tree/main/.claude/skills/datadog-insights into .agents/skills/datadog-insights/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "datadog-insights", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add speakeasy-api/gram --skill datadog-insights -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install speakeasy-api/gram datadog-insights --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/datadog-insights .cursor/skills/datadog-insights && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "datadog-insights" agent skill from https://github.com/speakeasy-api/gram/tree/main/.claude/skills/datadog-insights into .cursor/skills/datadog-insights/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "datadog-insights", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/speakeasy-api/gram.git --path .claude/skills/datadog-insights--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add speakeasy-api/gram --skill datadog-insights -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install speakeasy-api/gram datadog-insights --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/datadog-insights .gemini/skills/datadog-insights && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "datadog-insights" agent skill from https://github.com/speakeasy-api/gram/tree/main/.claude/skills/datadog-insights into .gemini/skills/datadog-insights/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "datadog-insights", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install speakeasy-api/gram datadog-insightsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add speakeasy-api/gram --skill datadog-insights -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/datadog-insights .github/skills/datadog-insights && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "datadog-insights" agent skill from https://github.com/speakeasy-api/gram/tree/main/.claude/skills/datadog-insights into .github/skills/datadog-insights/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "datadog-insights", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add speakeasy-api/gram --skill datadog-insights -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install speakeasy-api/gram datadog-insights --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/datadog-insights .opencode/skills/datadog-insights && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "datadog-insights" agent skill from https://github.com/speakeasy-api/gram/tree/main/.claude/skills/datadog-insights into .opencode/skills/datadog-insights/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "datadog-insights", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
datadog-insightsInvestigate Gram production health and post a digest to Slack
Datadog Insights is an agent skill from speakeasy-api/gram. Investigate Gram production health and post a digest to Slack
Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with Datadog and Slack. The repository describes itself as: Securely scale AI usage across your organization. A single stack to Connect, Secure, Observe and Distribute agents, MCPs, and Skills within your company. The licence is AGPL-3.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ad78247. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json, sql and python).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
slack.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SLACK_BOT_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Datadog Insights loads about 4.5k tokens when it runs. Until then it costs about 20 tokens; SKILL.md has 1,156 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
ath = os.path.expanduser("~/.config/gram/.env")CK_BOT_TOKEN not found in ~/.config/gram/.env")Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from speakeasy-api/gram at commit ad78247, republished under its AGPL-3.0 licence (© speakeasy-api). 1,156 words, ~4,524 tokens.
.claude/skills/datadog-insights/SKILL.md (or your agent's skills folder).You are producing a health report for Gram's production services. The report must be actionable and visually structured — critical issues must stand out immediately, tabular data must use code blocks, and every section must be separated by a divider.
Before starting: activate the datadog skill for Gram service names, MCP tools, and query guidelines.
⚠️ MANDATORY FORMAT RULES — READ BEFORE COMPOSING THE MESSAGE:
- Every major section MUST be preceded by a Unicode divider line:
──────────────────────────────────────on its own line, with a blank line above and below.- Top endpoints, error type breakdowns, and latency tables MUST use triple-backtick code blocks — never bullet points for tabular data.
- Code block tables must have aligned columns using spaces. Minimum widths: endpoint 38 chars, count 8 chars, 4xx% 6 chars, 5xx% 6 chars, p95 8 chars.
- Each monitor in alert MUST get its own paragraph — never combine multiple monitors into one block.
- Do NOT collapse or omit data to save space. If there are 8 monitors, show all 8.
These take priority over everything else. If any exist, they become the top of the digest.
search_datadog_incidents for state:(active OR stable) in the last 24hsearch_datadog_monitors with query status:alert (notification:slack-Speakeasy-gram-oncall OR notification:slack-oncall-gram). This filters to Gram-only monitors. Never include monitors that don't notify one of these two channels.analyze_datadog_logs with SQL:SELECT service, status, count(*) FROM logs GROUP BY service, status ORDER BY count(*) DESCenv:prod status:(error OR critical OR alert OR emergency), last 24h.
Compare the last 6h vs. the previous 18h to detect spikes.If there are critical issues, investigate each one:
search_datadog_logs)get_datadog_trace to find root causesGrep in server/internal/ for the error message to find the source code locationFor top error message breakdown, use analyze_datadog_logs:
SELECT message, count(*) as cnt
FROM logs
WHERE service = 'gram-server' AND status IN ('error', 'critical')
GROUP BY message
ORDER BY cnt DESC
LIMIT 10Use search_datadog_spans for service:gram-server env:prod over the last 24h, or:
sum:trace.http.server.request.hits{service:gram-server,env:prod} by {resource_name}.rollup(sum, 86400)Collect the top 10 endpoints with:
Keep 4xx and 5xx separate — never fold them into a single error rate. 4xx is mostly client behaviour (bad auth, missing resources) and is expected on public endpoints like /mcp/{mcpSlug}, while 5xx indicates a server fault. Use get_datadog_metric grouped by status code and bucket the series by leading digit:
sum:trace.http.server.request.hits{service:gram-server,env:prod} by {resource_name,http.status_code}.rollup(sum, 86400)If the metric is missing the http.status_code tag, fall back to aggregate_spans over service:gram-server env:prod grouped by resource_name, once with @http.status_code:[400 TO 499] and once with @http.status_code:[500 TO 599].
Compare traffic between two 12h windows:
from: now-12h, to: nowfrom: now-24h, to: now-12hUse get_datadog_metric with:
sum:trace.http.server.request.hits{service:gram-server,env:prod}.rollup(sum, 43200)Report:
gram-server, gram-worker, gram, fly)p50:trace.http.server.request{service:gram-server,env:prod} by {resource_name}
p95:trace.http.server.request{service:gram-server,env:prod} by {resource_name}
p99:trace.http.server.request{service:gram-server,env:prod} by {resource_name}Over the last 24h with .rollup(avg, 86400).
Report:
Call create_datadog_notebook with name "Gram Health Digest — <DAY> <DATE>" (e.g. "Gram Health Digest — Fri 2026-03-27"). Use absolute_time: true with start_time = 24h ago and end_time = now. One notebook is created per run — old ones accumulate and can be manually deleted periodically.
The notebook cells must be wrapped in {"cells": [...]}. Include:
{
"type": "notebook_cells",
"attributes": {
"definition": {
"type": "markdown",
"text": "One paragraph verdict with key numbers."
}
}
}{
"type": "notebook_cells",
"attributes": {
"definition": {
"type": "timeseries",
"title": "gram-server Error Rate (1h buckets)",
"requests": [
{
"q": "sum:trace.http.server.request.errors{service:gram-server,env:prod}.rollup(sum, 3600)",
"display_type": "bars",
"style": { "palette": "warm" }
}
],
"show_legend": true,
"yaxis": { "scale": "linear" },
"markers": [
{
"value": "y = 500",
"display_type": "warning dashed",
"label": "Elevated"
}
]
}
}
}{
"type": "notebook_cells",
"attributes": {
"definition": {
"type": "timeseries",
"title": "gram-server Traffic Volume (1h buckets)",
"requests": [
{
"q": "sum:trace.http.server.request.hits{service:gram-server,env:prod}.rollup(sum, 3600)",
"display_type": "area",
"style": { "palette": "dog_classic" }
}
],
"show_legend": true,
"yaxis": { "scale": "linear" }
}
}
}{
"type": "notebook_cells",
"attributes": {
"definition": {
"type": "timeseries",
"title": "Top Endpoint p95 Latency",
"requests": [
{
"q": "p95:trace.http.server.request{service:gram-server,env:prod} by {resource_name}.rollup(avg, 3600)",
"display_type": "line",
"style": { "palette": "dog_classic" }
}
],
"show_legend": true,
"yaxis": { "scale": "linear" },
"markers": [
{
"value": "y = 2",
"display_type": "error dashed",
"label": "2s threshold"
}
]
}
}
}{
"type": "notebook_cells",
"attributes": {
"definition": {
"type": "timeseries",
"title": "gram-worker Error Rate (1h buckets)",
"requests": [
{
"q": "sum:trace.http.server.request.errors{service:gram-worker,env:prod}.rollup(sum, 3600)",
"display_type": "bars",
"style": { "palette": "warm" }
}
],
"show_legend": true,
"yaxis": { "scale": "linear" }
}
}
}gram is an APM service, so use trace metrics:{
"type": "notebook_cells",
"attributes": {
"definition": {
"type": "timeseries",
"title": "gram (frontend) Trace Errors (1h buckets)",
"requests": [
{
"q": "sum:trace.http.server.request.errors{service:gram,env:prod}.rollup(sum, 3600)",
"display_type": "bars",
"style": { "palette": "warm" }
}
],
"show_legend": true,
"yaxis": { "scale": "linear" }
}
}
}fly is a log source (not an APM service), so use a log stream, not a trace metric:{
"type": "notebook_cells",
"attributes": {
"definition": {
"type": "log_stream",
"title": "fly (functions) Error Logs (24h)",
"query": "source:fly env:prod status:error",
"columns": ["timestamp", "host", "message"],
"message_display": "inline",
"show_date_column": true,
"show_message_column": true,
"sort": { "column": "timestamp", "order": "desc" }
}
}
}source:fly for Gram Functions logs:{
"type": "notebook_cells",
"attributes": {
"definition": {
"type": "log_stream",
"query": "(service:(gram-server OR gram-worker OR gram) OR source:fly) env:prod status:error",
"columns": ["timestamp", "host", "service", "message"],
"message_display": "inline",
"show_date_column": true,
"show_message_column": true,
"sort": { "column": "timestamp", "order": "desc" }
}
}
}Save the notebook URL — you will link it in the Slack message footer.
Based on all the data gathered, write one concrete recommendation for the on-call engineer. Be specific:
This recommendation goes into the Slack message as a dedicated section.
Build a list of Block Kit blocks. The message is structured around the 4 Golden Signals: Alerts → Errors → Traffic → Latency.
•) with inline backtick formatting for endpoint/service namessection mrkdwn text — they render as aligned monospace in Slack and are much more readable than bullet points for columnar datasection with fields (2-column grid) — never a context block, which is too small to notice1. Header
{
"type": "header",
"text": { "type": "plain_text", "text": "Gram Health Digest — <DAY> <DATE>" }
}2. Verdict — section with fields (2-column grid)
Always 6 fields: Status, Monitors in Alert, Errors (24h), Traffic (24h), Latency p95, Slow Endpoints.
{
"type": "section",
"fields": [
{ "type": "mrkdwn", "text": "*Status*\n<VERDICT_EMOJI> <one-word status>" },
{ "type": "mrkdwn", "text": "*Monitors in Alert*\n<N (name)> or 0 🟢" },
{ "type": "mrkdwn", "text": "*Errors (24h)*\n<count> · ↑<Nx> last 6h" },
{ "type": "mrkdwn", "text": "*Traffic (24h)*\n~<Xk> · <↑/↓pct%> last 12h" },
{ "type": "mrkdwn", "text": "*Latency p95*\n<Xms> (global)" },
{
"type": "mrkdwn",
"text": "*Slow Endpoints*\n<N endpoints > 2s> or All healthy 🟢"
}
]
}Follow with a divider.
3. 🚨 Alerts (omit section entirely if no monitors in alert)
Each monitor gets its own paragraph. Do NOT combine monitors.
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "🚨 *Alerts*\n🔴 *<Monitor name>*\n<What it means and why it matters>\n*Notifying:* `#<channel>`\n\n🔴 *<Next monitor name>*\n<What it means>\n*Notifying:* `#<channel>`"
}
}Follow with a divider.
4. ❌ Errors
Bullet prose for per-service summary, then a code block table for top error types.
{"type": "section", "text": {"type": "mrkdwn", "text": "❌ *Errors*\n• `gram-server`: X errors in last 6h (Y/h) vs Z/h prior — *~Nx spike*\n• `gram-worker`: N errors (stable)\n• `gram` (frontend): N (stable)\n• `fly` (functions): 0 🟢\n\n*Top error types — gram-server (24h):*\n```\nmessage count pct\nnot found 402 31.4%\ntoken value is empty for bearer auth 270 21.1%\nmissing value for env var in api key auth 74 5.8%\nHTTP roundtrip failed 70 5.5%\nno MCP install page metadata for toolset 65 5.1%\n```"}}Follow with a divider.
5. 📊 Traffic
Bullet prose for trend, then a code block table for top endpoints by volume with separate 4xx and 5xx columns. Never merge 4xx and 5xx into one error column. Flag any endpoint with a 5xx rate > 1% with ⚠️.
{"type": "section", "text": {"type": "mrkdwn", "text": "📊 *Traffic*\n• Previous 12h: ~Xk requests\n• Current 12h: ~Xk requests — *↑Y%* ⚠️ (flag if >30%)\n• Total 24h: ~Xk · 4xx: N (X%) · 5xx: N (X%)\n\n*Top endpoints by volume (24h):*\n```\nendpoint hits 4xx 5xx\nPOST /mcp/{mcpSlug} 103,784 8.2% 0.1%\nPOST /rpc/hooks.otel/v1/logs 16,824 0.0% 0.0%\nPOST /rpc/hooks.claude 14,956 0.3% 0.0%\nGET /mcp/{mcpSlug} 14,454 2.1% 1.4% ⚠️\nGET /.well-known/oauth-protected-resource 6,789 0.0% 0.0%\n```"}}Follow with a divider.
6. ⏱️ Latency
If any endpoint has p95 > 2s, use a code block table for slow endpoints. Always include "approaching threshold" if any endpoints are 1–2s p95.
{"type": "section", "text": {"type": "mrkdwn", "text": "⏱️ *Latency*\n*Global:* p50: Xms · p95: Xms · p99: Xms\n\n*Slow endpoints (p95 > 2s):*\n```\nendpoint p95 p50 hits\nGET /rpc/toolsets.listfororg 7,275ms 5,766ms 57 ⚠️\nGET /rpc/usage.getperiodusage 5,173ms 3,403ms 49 ⚠️\nPOST /chat/completions 4,713ms 2,615ms 15 (AI)\n```\n*Approaching threshold (p95 > 1s):*\n```\nGET /rpc/environments.list 1,406ms 57\nGET /rpc/access.listgrants 1,281ms 84\n```"}}If all endpoints are fast:
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "⏱️ *Latency* — All endpoints healthy. p50: Xms · p95: Xms · p99: Xms 🟢"
}
}Follow with a divider.
7. Recommendation
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "💡 *Recommendation*\n<Specific, concrete recommendation for the on-call engineer. One or two sentences. Name the action and where to look.>"
}
}Follow with a divider.
8. Footer — links to Datadog notebook and skill source
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "🔴 Critical 🟡 Warning 🟢 Healthy | <NOTEBOOK_URL|View in Datadog> | <https://github.com/speakeasy-api/gram/blob/main/.claude/skills/datadog-insights/SKILL.md|Skill source>"
}
]
}Replace NOTEBOOK_URL with the actual notebook URL from Step 5.
Write and run this Python script via Bash. Post to #gram-datadog-insights by default, unless a different channel was specified in the prompt.
import json, urllib.request, os, datetime
now_utc = datetime.datetime.utcnow()
digest_date = now_utc.strftime("%a %b %-d") # e.g. "Mon Apr 20"
env_path = os.path.expanduser("~/.config/gram/.env")
token = None
with open(env_path) as f:
for line in f:
if line.startswith("SLACK_BOT_TOKEN="):
token = line.split("=", 1)[1].strip().strip('"').strip("'")
break
if not token:
raise RuntimeError("SLACK_BOT_TOKEN not found in ~/.config/gram/.env")
channel = "C0AKLE930BX" # #gram-datadog-insights — override with channel name if specified in prompt
blocks = [] # replace with actual Block Kit blocks from Step 7 — use f"Gram Health Digest — {digest_date}" in the header block
def slack_post(payload):
data = json.dumps(payload).encode()
req = urllib.request.Request(
"https://slack.com/api/chat.postMessage",
data=data,
headers={"Content-Type": "application/json", "Authorization": f"Bearer {token}"},
method="POST",
)
with urllib.request.urlopen(req) as resp:
return json.loads(resp.read())
result = slack_post({
"channel": channel,
"text": "Gram Health Digest",
"blocks": blocks,
})
if not result.get("ok"):
raise RuntimeError(f"Slack error: {result}")
ts = result["ts"]
reply = slack_post({
"channel": channel,
"thread_ts": ts,
"text": "<!subteam^S09EXM6DPCY|dev-mcp-oncall>",
})
if not reply.get("ok"):
raise RuntimeError(f"Thread reply error: {reply}")
print(f"✓ Posted to {channel} (ts={ts}), oncall tagged in thread")MANDATORY RULES — never violate:
© speakeasy-api, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/datadog-insights of speakeasy-api/gram.
Open the folder on GitHubat commit ad78247
Datadog Insights next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Datadog Insights this skillspeakeasy-api/gram | 272 | — | ~4.5k | Automated safety check: Notes | AGPL-3.0 | |
| Code Design Rationale Investigatorcursor/plugins | 10k | 9 repos | ~2.6k | Automated safety check: Pass | None | |
| Tool ConnectorZhixiangLuo/10xProductivity | 478 | — | ~925 | Automated safety check: Pass | MIT | |
| Product Diagnosisamplitude/builder-skills | 159 | — | ~4k | Automated safety check: Pass | None | |
| Agent Browser CLIvercel-labs/agent-browser | 44k | 24 repos | ~864 | Automated safety check: Pass | Apache-2.0 | |
| Slack GIF Creatoranthropics/skills | 180k | 29 repos | ~2k | Automated safety check: Pass | Apache-2.0 |
cursor/plugins
Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.
ZhixiangLuo/10xProductivity
Connect any tool you use at work to your agent — including internal company tools, custom-built systems, deployment portals, incident trackers, internal knowledge bases, HR systems, and commercial…
amplitude/builder-skills
Diagnoses product health by cross-referencing Amplitude analytics (dashboards, charts, funnels, feedback, AI agent analytics), optionally Datadog (errors, latency, stack traces), and optionally…
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking…
anthropics/skills
Provides Slack size and frame limits, Python animation helpers and validators for building animated GIFs sized for emoji and messages.
vercel-labs/agent-browser
Automates Electron desktop apps such as VS Code, Slack or Discord by connecting agent-browser to their Chrome DevTools Protocol port.
speakeasy-api/gram
A skill your agent uses when automating the Gram dashboard in a browser, capturing screenshots, inspecting pages.
speakeasy-api/gram
A skill your agent uses when adding, changing, restyling, reviewing, validating, or previewing a Gram/Speakeasy transactional email, in Go or in LMX/MJML — a template<name.go, a TemplateKey…
speakeasy-api/gram
A skill your agent uses when adding, changing, or styling UI in client/admin (the Gram admin dashboard) that touches shadcn/ui — a button, dialog, table, sidebar, badge, select, tabs, tooltip, card…
speakeasy-api/gram
A skill your agent uses when adding, editing, reviewing, testing, or locating a reviewed skill distributed with the Platform MCP plugin; triggers include "Platform MCP skill", "platformmcpskills"…
speakeasy-api/gram
A skill your agent uses when changing or reviewing Gram ClickHouse schemas, migrations, queries, inserts, access principals, bootstrap SQL, Cloud compatibility, partial migration failures, or…
speakeasy-api/gram
A skill your agent uses when gating a feature behind a flag, dogfooding or gradually rolling out a change, choosing between productfeatures and PostHog feature flags, adding or checking a product…
Investigate Gram production health and post a digest to Slack. Datadog Insights is an agent skill from speakeasy-api/gram.
Run `npx skills add speakeasy-api/gram --skill datadog-insights -a claude-code`. Or copy the skill folder (.claude/skills/datadog-insights in speakeasy-api/gram) into .claude/skills/datadog-insights in your project. Claude Code loads it when a task matches its description.
Run `npx skills add speakeasy-api/gram --skill datadog-insights -a codex`. Or copy the skill folder (.claude/skills/datadog-insights in speakeasy-api/gram) into .agents/skills/datadog-insights in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add speakeasy-api/gram --skill datadog-insights -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/datadog-insights, .gemini/skills/datadog-insights, .github/skills/datadog-insights and .opencode/skills/datadog-insights in your project.
Going by SKILL.md and its folder, Datadog Insights needs credentials named SLACK_BOT_TOKEN.
SKILL.md names 1 domain. In commands or code: slack.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Datadog Insights is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Datadog Insights: Code Design Rationale Investigator (cursor/plugins, 10k stars), Tool Connector (ZhixiangLuo/10xProductivity, 478 stars), Product Diagnosis (amplitude/builder-skills, 159 stars) and Agent Browser CLI (vercel-labs/agent-browser, 44k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
speakeasy-api (a GitHub organization) maintains it in speakeasy-api/gram, which has 272 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 8, 2026.
Source: speakeasy-api/gram on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.