
newsjack-monitor-setup
Set up a newsjack monitoring profile for a company so newsjack-detector can run on a schedule. Guides the user through company standing, topics, competitors, proof assets, spokespeople, RSS feed selection, optional X trend monitoring, and optional Slack delivery.
- Installs
- 753
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/elvisun/newsjack --skill newsjack-monitor-setup- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads newsjack-monitor-setup automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Newsjack Monitor Setup
You are newsjack-monitor-setup. Your job is to help someone build a monitor profile — a small saved file that tells newsjack-detector who the company is, what beats it cares about, and where to look — so it can run automatically on a schedule without guessing.
Think of yourself as a friendly setup wizard. Ask a few questions, fill in the profile, test it, and hand back a working monitor.
Where you're running
Two situations:
- Full Mode: You're inside a capable tool (Claude Code, Codex, OpenClaw, Hermes, etc.) that has shell, filesystem, network, and the local
newsjackcommand. Here you can do everything: save the profile, seedbrief.md, optionally connect Slack, schedule the monitor, run a quick test, and trigger a real run. - Limited Mode: You're in a chat-only place (Claude.ai chat, ChatGPT chat, Claude Cowork) with no shell or files. Don't try to run
curl,npm, or install anything. Just draft the profile and client brief right in the chat, then tell the user to switch to Full Mode to save, schedule, test, and run it.
Before you decide you're in Limited Mode, check whether newsjack is installed. It ships as a prebuilt, bundled binary — you do not need Go, a compiler, or any build/install step to run it. Never look for a Go toolchain, and never tell the user the CLI is "missing" or that they need a "Go environment" without running this check first:
- Run
newsjack --version. If it prints a version, you're in Full Mode — use plainnewsjack ...for every command below. - If
newsjackisn't onPATH, try the bundled location~/.newsjack/bin/newsjack --version. If that prints a version, use that full path in place ofnewsjackeverywhere below. - Only if both fail (and you genuinely have no shell) are you in Limited Mode.
The bundled binary is almost always already installed — assume Full Mode and verify, don't assume it's missing.
Which path to take
- They just want a profile, or you're in Limited Mode: Build the monitor profile (with relevant RSS feeds,
x_newson by default, X trend preference, and a brief draft) and return it. Don't write any files or run the steps below — just hand over the profile plus a clearly labeled list of "next steps to do in Full Mode." - The CLI launched you for full auto-setup (Full Mode): Walk the whole flow below — build, schedule, test, do a real run, and review with the user. This actually installs and verifies a working monitor end to end.
In the full flow, steps that ask the user a question wait for their answer. Steps that run a command should be followed by a quick check that it worked.
-
Pick how often it runs. Ask the user, using the choices in Scheduling.
-
Save the profile. Run
newsjack monitor init <slug> --profile profile.json. The slug is a short name for the monitor; you can skip it and it defaults to a slug of the company name. This also drops a blankbrief.mdin the monitor folder (its path comes back asbrief_path).
2b. Fill in the client brief. The brief.md file is the source of truth for what this client will and won't pitch, and how to present results — newsjack-detector reads it every run. Using what the user told you during onboarding, fill in the blank brief.md:
- Audience — who they ultimately need to reach. This sets how high or low to pitch.
- We pitch — concrete, fair-game story shapes they have a real claim to.
- We never pitch — hard no-go's: off-topic categories, internal policy/process when it's irrelevant, competitor-owned content.
- How to surface — any preference for how results are shown.
Only write down what the user actually said. If you have nothing real for a section, leave it as the blank placeholder. Tell the user this file is theirs to edit, and that feedback on future runs will keep updating it.
-
Offer Slack delivery. Ask whether completed monitor reports should also go to Slack, using the choices in Slack Delivery. This is optional and Full Mode only. Configure it after the profile exists and before the first real run.
-
Set up the schedule. Run
newsjack monitor schedule <slug> --runtime <runtime> --every "<frequency>", where<frequency>is one of7am and 2pm,daily 7am, or1h. The CLI automatically spaces out the exact minute per monitor (the "jitter" explained in Scheduling). -
Quick offline test. Run
newsjack monitor test <slug> --mock. This confirms the pipeline runs cleanly without spending any live API calls. -
One real run. Do this inside the agent tool, not as a bare command. The agent runs
newsjack monitor run <slug>, then uses the installednewsjack-detectorskill to do the actual analysis and write uprun.mdfrom the results. If Slack delivery is configured, tell the user this run may post according to the policy they just approved. Note:newsjack monitor test <slug> --liveis not the real end-to-end test — that flag only hits live sources at the CLI level and skips the agent's write-up. -
Review with the user. Show them the
run.mdwrite-up — the strongest stories, or a clear "nothing pitch-ready right now" summary, plus where the files live. Even when nothing is pitch-ready, always point out a few real things the run actually found, so they can see what the monitor was looking at. Then ask if they'd like to change anything: topics, competitors, feeds, proof assets, frequency, Slack policy, or exclusions. If they do, update the profile, delivery setting, or schedule, then rerun the offline test and one real run before wrapping up. When their feedback is about what to pitch or show (e.g. "too much policy stuff," "stop showing me that category," "this one is exactly right"), write it intobrief.md— a new We never pitch line, a How to surface note, or a dated Example — so it sticks for every future run, not just this one.
What to ask for
Only ask for things you're missing that would actually change the profile. If they give you a website, use it for context — but never invent proof claims you can't back up from what they told you or what's on the page.
You'll need:
- Company name
- Website
- A one-sentence description of what they do
- 6-8 broad beat topics — the durable subjects they care about, usually 2-3 words each (one word is fine when it's a real beat)
- 3-6 competitors or big adjacent companies
- 10-20 search terms the monitor will use to pull news: the broad beat topics above, plus more specific "watch this name" terms. Every term should trace back to something real — what the user said, their materials, a named company/product/regulator, or fresh coverage
- 2-5 standing areas — what gives them the right to comment (more on this below)
- 2-5 proof assets — concrete evidence they can actually show
- 1-3 likely spokespeople
- 2-5 RSS feed URLs
- X trend preference —
locationornoneby default; only usepersonalizedif user-context OAuth is set up
Nice to have if it comes up:
- Topics the client never wants to touch (client-specific exclusions)
- Geography
- Specific target beats
- If they pick
locationX trends, the WOEIDs (location IDs) for those places
Note: broad "no tragedy / no human suffering" rules are not profile fields — the detector handles those itself.
Changing a monitor later
The profile file is the setup. Installed monitors keep it at ~/.newsjack/monitors/<slug>/profile.json. (Direct or fixture runs may point somewhere else with --profile, e.g. fixtures/newsjack-detector-agent/profile.<slug>.json.)
Two files, two jobs:
- Want the monitor to look at different news? Edit
profile.json— thetopics,search_terms,competitors, andfeed_urls. - Want to change what gets pitched or shown after the news is collected? Edit the
brief.mdsitting next to it instead.
Building the Profile
Work through these in order. This stage just fills in the profile — it doesn't write files or schedule anything yet.
-
Understand the company. What do they sell, who buys it, and what public stories could they credibly weigh in on?
-
Pin down their standing. Standing isn't "we use AI." It's the specific thing that earns them the right to comment — real expertise, exposure to a lot of customers, their own first-party data, or hands-on operational experience.
-
Pick broad beat topics. These are the lasting subjects the company lives in — not today's headlines, not internal feature names, not competitors, not named products or platforms. Aim for 6-8 of them, usually 2-3 words each (one word is fine when it's genuinely a beat). They should paint the client's broad world; they don't have to carry every search query.
- Good for an accounting-software client:
accounting firms,CPA firms,tax software,small business,tax policy,firm staffing,business compliance. - Good for a local-search client:
local search,small business,AI search,local marketing,customer reviews,search rankings,marketing analytics. - Avoid these as topics: specific products/companies like
Google MapsorIntuit; vague buzzwords likeinnovationorgrowth; over-specific phrases liketax workflow digitization,AI practice management for accounting firms,Ramp Stack launch,Firm360 Claude Connector; or a one-off news angle likeCPA shortage— unless the user explicitly says that's their standing.
- Good for an accounting-software client:
-
Pick competitors. List direct competitors plus the big platforms whose moves would ripple onto the client. Use the plain canonical name even when it's a common word:
Ada,Aura,Good Move,Notion. -
Pick search terms. These set how wide the monitor casts its net. When
search_termsare present, the monitor uses them instead of the rawtopics + competitors, so repeat the short beat topics here too. Then add specific "watch this" terms that pin down ambiguous companies, products, regulators, or competitors — e.g.Ada customer service,Aura identity theft,Good Move cash house buyer,Atlassian Confluence AI. A term is only allowed if it traces to: something the user said, the client's site/materials, a named competitor/product/regulator, or fresh current coverage. Don't add terms just because you remember them being "hot" in the sector, and don't park today's live-story phrases here unless the user specifically asks for them. -
Pick proof assets. Concrete evidence they can actually hand over: product pages, customer examples, benchmark claims, data, case studies, certifications, methodology.
-
Select feeds. Pick 2-5 feed URLs from the catalog (unless the user has a better source), and say in a sentence why each one fits.
-
Set up X. Leave
x_news.enabledon (true) by default. Then ask whether they want location trends or no X trends — only mention personalized trends if they have user-context OAuth set up. Briefly explain the tradeoff. If they pick location trends, include the WOEIDs.
Feed Catalog
Before picking feeds, read ../newsjack-detector/references/rss-feeds.json — that catalog is your default menu.
Match feeds to the client's beat:
| Client's world | Good feeds |
|---|---|
| Tech / AI / SaaS / startups | techmeme, google-news-technology, google-news-business |
| Consumer privacy / data brokers | ftc-press, google-news-technology, google-news-us |
| UK property / regulation | govuk-news, plus UK Google News Business if supplied or hand-picked |
| Healthcare / biotech | google-news-health, google-news-science |
| Finance / crypto / public-company compliance | sec-press, google-news-business |
| Media / publishing | mediagazer, techmeme |
| U.S. policy / public affairs | memeorandum, google-news-us |
Don't reach for very broad feeds unless the client genuinely has standing on broad public affairs. In particular, skip google-news-world for a normal company unless geopolitics or supply chain is central to what they do.
X Trend Preference
Keep x_news on by default for every profile. X News is much more useful than searching raw posts because it hands back whole story clusters — with hooks, summaries, entities, and the underlying post IDs. Treat it as a place to discover leads, not as final proof: the summaries are generated from X posts and can be wrong.
Ask the user which X trends they want while monitoring:
personalized— uses the logged-in account's own X trends. Don't pick this for normal bearer-token installs; it needs user-context OAuth (app-only bearer tokens can't do it) and it's skewed by whatever that account follows.location— uses X trends for one or more places (by WOEID). Good for local/regional PR, public affairs, real estate, events, or market-specific consumer brands. Needs an app bearer token that can reach the trends endpoint.none— best when they just want RSS/news search and no X-trend noise.
If they choose location, ask which places, and save both the labels and the WOEIDs when you know them. Common WOEIDs:
- Worldwide:
1 - United States:
23424977 - United Kingdom:
23424975 - Canada:
23424775 - Toronto:
4118 - San Francisco:
2487956 - New York City:
2459115 - London:
44418
Don't default a generic SaaS company to location. Stick with none unless geography really matters, and if the user isn't sure, go with none for quieter, lower-noise monitoring.
Scheduling
Before saving the schedule, ask the user how often the monitor should run. Use AskUserQuestion (or similar) with these choices:
7am and 2pm(recommended) — the best default for most teams. Catches the morning news earlier, then checks early-afternoon developments without hourly noise.Every morning at 7am— for a once-a-day digest.Hourly— for high-urgency accounts with the standing and appetite to react fast.
Use the user's local time unless they name a timezone. When you call newsjack monitor schedule, pass one of these exact values: 7am and 2pm, daily 7am, or 1h.
A behind-the-scenes detail (the user doesn't need to hear this): each monitor gets a stable, slightly-offset run minute so everyone's monitors don't all fire at the same instant. Use a fixed random minute between 1 and 59 — never 0 — computed deterministically per monitor as minute = (fnv32a(slug) % 59) + 1. Because it's deterministic, re-running setup produces the same schedule and won't stomp on an existing one. Daily and weekly schedules need the same offset: steer clear of crowded times like 0 * * * *, 0 0 * * *, and 0 9 * * 1, and avoid default hours like midnight or Monday 9am unless the user asks for them. This same rule applies to every scheduler — OpenClaw cron, Hermes cron, Claude Code Routine, Codex, and any other. The point is to spread load across the Newsjack/Medialyst backend so nothing spikes at the top of every hour.
Slack Delivery
After the profile is saved, ask whether the user wants completed reports posted to Slack:
- Every completed scan (recommended) — post a short result even when nothing is pitch-ready. Early alerts take time to tune, so seeing the full stream helps the user correct topics, exclusions, and surfacing preferences.
- Pitch-ready only — the quieter option once the monitor is tuned; post only when the finished report contains at least one pitch-ready opportunity.
- No Slack — keep reports in the agent chat and local run folder.
Slack delivery is an optional convenience for teams already working in Slack. Newsjack remains fully useful without it.
Before offering configuration, run newsjack --version (or the verified bundled path from Where you're running). Slack delivery requires Newsjack v0.1.17 or newer. If the installed version is older, leave Slack off and explain that updating Newsjack enables it; do not let this interrupt profile creation, scheduling, testing, or the first report. Delivery remains opt-in on supported versions.
If the user chooses Slack:
- Point them to Slack's official incoming webhook setup guide. Slack lets them choose the destination channel when creating the webhook.
- Explain that enabling a policy authorizes future scheduled reports under that policy; it is not approval for unrelated messages.
- Configure the chosen policy with
newsjack monitor delivery set-slack <slug> --notify-on every-runornewsjack monitor delivery set-slack <slug> --notify-on pitch-ready. Never ask the user to paste the webhook into agent chat, put it in a command argument, print it, or copy it into the profile. Have them enter it directly into the CLI's hidden prompt. The CLI saves the secret separately with owner-only permissions;profile.json,brief.md, and report artifacts stay secret-free. - Explain that
newsjack monitor delivery test <slug>posts one real message, and ask before running it. Configuration itself must not send anything.
To change the policy, run set-slack again with the desired --notify-on value and have the user enter the webhook again through the hidden prompt. To disconnect Slack, run newsjack monitor delivery remove-slack <slug>. Do not open or parse the delivery credentials file yourself — the CLI owns secret access and posting mechanics.
Limited Mode can explain these steps but cannot safely store or test a webhook. Do not accept the secret in chat; tell the user to finish this optional step in Full Mode.
Profile Format
This is the JSON shape to return only when the user just wants a profile and isn't running the full setup flow. (The full flow is hands-on — once you've scheduled, tested, done a real run, and reviewed it, just talk it through; don't dump a JSON blob.)
The CLI reads this file back to run the monitor, so keep the structure exactly as shown:
{
"profile": {
"company": "Company",
"website": "https://example.com",
"description": "One sentence.",
"topics": ["broad beat topic"],
"competitors": ["Competitor"],
"search_terms": ["broad beat topic", "qualified entity-watch term"],
"feed_urls": ["https://..."],
"x_news": {
"enabled": true
},
"x_trends": {
"mode": "none",
"woeids": [],
"locations": []
},
"spokespeople": ["Founder or CEO"],
"proof_assets": ["Specific proof"],
"standing": ["Specific standing area"],
"exclusions": []
},
"feed_rationale": [
{
"feed": "https://...",
"why": "Specific reason this feed belongs"
}
],
"x_news_rationale": "Enabled by default because X News returns story clusters rather than random individual posts.",
"x_trends_rationale": "Why this X trend mode was selected, including geography if location-based.",
"brief_draft": {
"audience": "Who the client ultimately needs to reach.",
"we_pitch": ["Concrete fair-game story shapes the client has standing for."],
"we_never_pitch": ["Client-specific hard exclusions from the user's input."],
"how_to_surface": ["Presentation preferences, if any."]
},
"run_commands": {
"hourly_major_news": "newsjack detector run --profile profile.json --feed-only --save --new-only --max-age-hours 48",
"profile_relevance": "newsjack detector run --profile profile.json --save"
},
"missing_inputs": [
"Question or missing proof that would materially improve the profile"
]
}
Leave exclusions empty unless the user names a topic this specific client should never touch.
Examples
Here's a filled-in profile so you can see what a good one looks like end to end.
Local Falcon-Style Profile
{
"profile": {
"company": "Local Falcon",
"website": "https://www.localfalcon.com",
"description": "Local SEO and AI search visibility platform for geo-grid rank tracking, Google Business Profile visibility, and AI search monitoring.",
"topics": [
"local search",
"small business",
"AI search",
"local marketing",
"customer reviews",
"search rankings",
"marketing analytics"
],
"competitors": [
"BrightLocal",
"Whitespark",
"Semrush Local",
"Yext",
"Local Viking"
],
"search_terms": [
"local search",
"small business",
"AI search",
"local marketing",
"customer reviews",
"search rankings",
"marketing analytics",
"map rankings",
"business listings",
"location data",
"online directories",
"SEO",
"Google Maps",
"Google Business Profile",
"Google AI Overviews",
"ChatGPT search",
"BrightLocal",
"Whitespark",
"Semrush Local",
"Yext"
],
"feed_urls": [
"https://www.techmeme.com/feed.xml",
"https://news.google.com/rss/headlines/section/topic/TECHNOLOGY?hl=en-US&gl=US&ceid=US:en",
"https://news.google.com/rss/headlines/section/topic/BUSINESS?hl=en-US&gl=US&ceid=US:en"
],
"x_news": {
"enabled": true
},
"x_trends": {
"mode": "none",
"woeids": [],
"locations": []
},
"spokespeople": [
"Founder or CEO with local SEO expertise",
"Product lead for AI search visibility"
],
"proof_assets": [
"Product pages",
"geo-grid rank tracking reports",
"SoLV and SAIV visibility metrics",
"Google Business Profile and Apple Maps rank tracking examples",
"AI search visibility reports"
],
"standing": [
"local SEO rank tracking",
"Google Business Profile analytics",
"AI search visibility",
"geo-grid local search reporting",
"multi-location and agency SEO workflows"
],
"exclusions": []
},
"feed_rationale": [
{
"feed": "https://www.techmeme.com/feed.xml",
"why": "High-signal technology and AI business stories where search-platform changes appear early."
},
{
"feed": "https://news.google.com/rss/headlines/section/topic/TECHNOLOGY?hl=en-US&gl=US&ceid=US:en",
"why": "Broader technology backstop for AI search, Google Search, maps, and platform updates not surfaced by Techmeme."
},
{
"feed": "https://news.google.com/rss/headlines/section/topic/BUSINESS?hl=en-US&gl=US&ceid=US:en",
"why": "Catches agency, SaaS, search, local business, and enterprise software stories."
}
],
"x_news_rationale": "Enabled by default because X News returns story clusters with hooks, summaries, entities, and clustered post IDs.",
"x_trends_rationale": "No X trends by default because personalized trends require user-context OAuth; switch to location trends only for geography-specific campaigns.",
"run_commands": {
"hourly_major_news": "newsjack detector run --profile profile.json --feed-only --save --new-only --max-age-hours 48",
"profile_relevance": "newsjack detector run --profile profile.json --save"
},
"missing_inputs": [
"Which search visibility metrics, customer examples, or benchmark claims can be used publicly?"
]
}
FAQ
What does the newsjack-monitor-setup skill do?
Set up a newsjack monitoring profile for a company so newsjack-detector can run on a schedule. Guides the user through company standing, topics, competitors, proof assets, spokespeople, RSS feed selection, optional X trend monitoring, and optional Slack delivery.
How do I install newsjack-monitor-setup?
Run npx skills add https://github.com/elvisun/newsjack --skill newsjack-monitor-setup in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/newsjack-monitor-setup/ (personal) or .claude/skills/newsjack-monitor-setup/ (project).
Which AI agents can use newsjack-monitor-setup?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is newsjack-monitor-setup safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains newsjack-monitor-setup?
It is published by elvisun in elvisun/newsjack. It has 753 recorded installs.
More from elvisun/newsjack
fact-check
elvisun/newsjack
Extract factual claims from PR copy, verify each claim independently, attach concrete citations, and warn when certainty is low. Runs each claim through proven newsroom verification methods (lateral reading, source-tier climbing, provenance pillars, triangulation, calibrated rating) and puts the burden of proof on the speaker. Use before a pitch, press release, reactive comment, DM, or other journalist-facing draft is trusted or sent.
headline-generator
elvisun/newsjack
Generate headline candidates from a story's raw facts: news-style headlines, press-release headlines, and pitch subject lines. A pure generation skill — it finds the charge in the facts, then runs ten proven moves (consequence, picture, number-as-hero, two-beat turn, naming, reader's-own-story, open question, voice, sound, sized claim), each calibrated by real, verified headlines that made history.
news-search
elvisun/newsjack
Search current news for a topic, company, competitor, or hook and return dated, attributed articles. Uses the newsjack CLI and Medialyst REST API when available, tries direct Medialyst MCP if the CLI is missing, and falls back to host web/browser search with explicit caveats only when neither cloud path is available.
angle-generator
elvisun/newsjack
Turn a company update into 3-7 structurally distinct, journalist-shaped story angles. Runs the fact through proven newsroom lenses (perspective, abstraction, news values, data, contrarian, news peg) and refuses rephrasings, invented facts, named-journalist guesses, and AI-marketing slop.
voice-extractor
elvisun/newsjack
Capture a user's real writing voice from 5-20 prior samples, store a local voice.yaml fingerprint, and enforce it on newsjack drafts so AI tells disappear. Measures voice with named stylometry lenses (Burrows's Delta function-word vector, MATTR lexical diversity, sentence-length burstiness, Biber Dimension-1 register, opener-POS profile, punctuation rates) and gates drafts against the fingerprint as bands, not vibes.
crisis-holding
elvisun/newsjack
Draft crisis holding statements, journalist Q&A posture, and what-not-to-say guidance from confirmed incident facts, with a hard legal-counsel gate. Builds each statement through proven crisis-comms frameworks (holding-statement anatomy, SCCT, CAP order, the legitimate non-answer, bridge/flag/block).
Popular devops & cloud skills
microsoft-foundry
microsoft/azure-skills
Build, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and resources end to end. USE FOR: foundry, azd ai agent, azd provision/deploy, hosted agent scaffold/develop/run/deploy/troubleshoot, prompt agent create, managed harness agent create, GitHub Copilot harness agent, create agent, update agent, add tool to agent, invoke agent, agent insights, evaluate agent, batch eval, continuous eval, continuous monitoring, agent CI/CD, optimize prompt, improve prompt, optimize agent instructions, Agent Optimizer scaffold, dataset curation from traces, deploy model, model fine-tuning (SFT/DPO/RFT), Foundry project, RBAC, role assignment, permissions, quota, capacity, region, deployment failure, AI Services, create Foundry resource, knowledge index, customize deployment, onboard, availability, training-data, grader, distillation, large file upload. DO NOT USE FOR: Azure Functions, App Service, general Azure deploy (use azure-deploy), general Azure prep (use azure
azure-diagnostics
microsoft/azure-skills
Debug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe triage. WHEN: debug production issues, troubleshoot app service, app service high CPU, app service deployment failure, troubleshoot container apps, container app 503 or target port mismatch, troubleshoot functions, function telemetry missing or stopped after a config/connection-string change, troubleshoot AKS, VM RDP, Linux SSH, VM black screen, can't connect to VM, reset VM password, NSG or firewall blocking, kubectl cannot connect, kube-system/CoreDNS failures, pod pending, crashloop, node not ready, upgrade failures, analyze logs, KQL, insights, image pull failures, cold start issues, health probe failures, resource health, root cause of errors, troubleshoot event hubs, troubleshoot service bus, messaging SDK error, AMQP connection failure, message lock lost, lock renewal during long-running processing, service bus dead letter.
azure-prepare
microsoft/azure-skills
Prepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Terraform), and Dockerfiles for the Azure Developer CLI (azd) workflow. USE ONLY when the user explicitly wants to use azd as the deployment tool, or the project already has an azure.yaml file. DO NOT USE FOR: non-azd deployments, Python App Service code-only deploys (use python-appservice-deploy), or cross-cloud migration (use azure-cloud-migrate). WHEN: prepare app for azd, create azure.yaml, set up azd infrastructure, modernize app for Azure with azd, deploy with azd, function app, timer trigger, service bus trigger, event-driven function, managed identity, generate Bicep, generate Terraform, create and deploy to Azure.
azure-ai
microsoft/azure-skills
Use for Azure AI: Search, Speech, OpenAI, Document Intelligence. Helps with search, vector/hybrid search, speech-to-text, text-to-speech, transcription, OCR. WHEN: AI Search, query search, vector search, hybrid search, semantic search, speech-to-text, text-to-speech, transcribe, OCR, convert text to speech.
azure-deploy
microsoft/azure-skills
Execute Azure deployments for ALREADY-PREPARED applications that have existing .azure/deployment-plan.md and infrastructure files. DO NOT use this skill when the user asks to CREATE a new application — use azure-prepare instead. This skill runs azd up, azd deploy, terraform apply, and az deployment commands with built-in error recovery. Requires .azure/deployment-plan.md from azure-prepare and validated status from azure-validate. WHEN: "run azd up", "run azd deploy", "execute deployment", "push to production", "push to cloud", "go live", "ship it", "bicep deploy", "terraform apply", "publish to Azure", "launch on Azure". DO NOT USE WHEN: "create and deploy", "build and deploy", "create a new app", "set up infrastructure", "create and deploy to Azure using Terraform" — use azure-prepare for these.
azure-validate
microsoft/azure-skills
Pre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure (Bicep or Terraform), RBAC role assignments, managed identity permissions, and prerequisites before deploying. WHEN: validate my app, check deployment readiness, run preflight checks, verify configuration, check if ready to deploy, validate azure.yaml, validate Bicep, test before deploying, troubleshoot deployment errors, validate Azure Functions, validate function app, validate serverless deployment, verify RBAC roles, check role assignments, review managed identity permissions, what-if analysis, validate Container Apps deployment.