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 agentmods add skills/agenticpawan/fullstack-pilot/azure-cicd-securitynpx skills add AgenticPawan/FullStack-Pilot --skill azure-cicd-securitygit clone --depth 1 https://github.com/AgenticPawan/FullStack-PilotWrote 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/agenticpawan/fullstack-pilot/azure-cicd-security)<a href="https://agentmods.dev/skills/agenticpawan/fullstack-pilot/azure-cicd-security"><img src="https://agentmods.dev/badge/skills/agenticpawan/fullstack-pilot/azure-cicd-security.svg" alt="Measured on agentmods" height="20"></a>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 | $0.00093 | $0.01156 |
| Opus 5 | $0.00046 | $0.00578 |
| Sonnet 5 | $0.00019 | $0.00231 |
| Haiku 4.5 | $0.00009 | $0.00116 |
Grade A, and why
azure-cicd-security 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 4d 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 — 141 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Standard IDs
| ID | Severity | What it checks |
|---|---|---|
| CICD-001 | P0 | Long-lived service-principal secret used instead of OIDC federated credentials |
| CICD-002 | P1 | No environment protection rules/approval gate on a production deployment |
| CICD-003 | P1 | Deployment identity granted broader roles than the resources it actually touches |
| CICD-004 | P1 | Secret referenced directly in workflow YAML instead of via GitHub encrypted secrets |
Check A — Long-lived secret instead of OIDC federation (CICD-001)
Detection
Grep .github/workflows/*.yml for azure/login@v* using creds:/client-secret: inputs
sourced from a stored secret, instead of client-id/tenant-id/subscription-id with no
secret at all (OIDC federated credential trust between GitHub and Entra ID). A long-lived
service-principal secret sitting in GitHub Secrets is a standing credential that doesn't
expire on its own and is a high-value target if the repo or an action dependency is
compromised.
BAD — long-lived client secret
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }} # a JSON blob containing a client secret that never rotates automatically
GOOD — OIDC federated credential, no stored secret
permissions:
id-token: write # required for OIDC
contents: read
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
# No client-secret — GitHub's OIDC token is exchanged for a short-lived Azure token per run.
Check B — No environment protection/approval gate (CICD-002)
Detection
Check whether the production deployment job targets a GitHub environment: with
protection rules (required reviewers, wait timer) configured, versus deploying to
production on every push to main with no human gate.
BAD — production deploy fires automatically, no approval
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.
- 4d ago First seen · 141 lines · 93 tokens per session scan A 5e7969d95c94
azure-cicd-security is a skill published in the GitHub repository AgenticPawan/FullStack-Pilot (2 stars, last pushed 1mo ago), licensed MIT. It adds 93 tokens to every session and 1,156 once invoked, about $0.0005 per session on Opus 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-31.
Other skills, from other repositories
dxkit-action
Read a dxkit report and execute fixes — prioritize findings by severity, plan the fix sequence, run the fix, verify the score moved, re-baseline if appropriate. Supports a SCOPED pass to burn down one category at a time (dependency/BOM vulnerabilities, security, code quality, tests, docs), and a BASELINE-CLEANUP pass…
dxkit-onboard
Walk a customer through setting up dxkit on a repo from scratch — checks state, installs, scaffolds, configures hooks, runs doctor, fixes any gaps, captures the first baseline, sets up branch protection + Codespaces prebuild. Also drives a DETERMINISTIC deep-configuration pass — it runs vyuh-dxkit configure --plan…
dxkit-config
Edit dxkit configuration — add/remove paths in .dxkit-ignore, tune .npx vyuh-dxkit.json, adjust .dxkit/policy.json guardrail severity. Use when the user wants to exclude a directory from scanning, change scoring thresholds, or modify what blocks a PR.
dxkit-flow
Configure, diagnose, and repair the dxkit UI→API integration gate — set up flow gating, explain the flow-contract diagnosis, fix a net-new broken integration a guardrail flagged, and run the cross-repo handshake. Use when the user says "set up the flow gate", "why is this call unresolved", "the guardrail says I broke…
dxkit-allowlist
Manage the dxkit allowlist over its whole lifecycle — list, inspect, audit (including orphaned entries after a re-baseline), bulk-defer newly published dep-vuln advisories, remove stale entries, prune expired ones, and export Snyk-originated suppressions to a .snyk policy. Use when the user says "review our…
dxkit-checks
Declare and operate custom repo invariants as first-class guardrail gates — a project rule (a "no imports from X" check, an architecture script, a license audit) or the built-in per-language lint gate. Use when the user says "make our lint errors block the PR", "gate our custom check", "add a repo rule to the…