threadlight-cicd
Use when a Threadlight pilot must reach production through a CI/CD pipeline instead of the agent running `azd up` directly — prod deploys run under a…
Skill by aiappsgbb
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/aiappsgbb-threadlight-cicd
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops, cloud, data, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/threadlight-cicd
What's inside
- Skill name
threadlight-cicd- Description
- Use when a Threadlight pilot must reach production through a CI/CD pipeline instead of the agent running `azd up` directly — prod deploys run under a federated identity with scoped RBAC from private-VNet runners and the agent has no standing deploy rights. Generates a GitHub Actions or Azure DevOps prod-deploy pipeline + env-setup runbooks, with an onboarding-path gate and a central-platform boundary vs threadlight-citadel-hub. USE FOR: ci/cd pipeline, prod deploy pipeline, github actions pipeline, azure devops pipeline, OIDC, workload identity federation, WIF, UAMI, scoped RBAC, self-hosted runners, private vnet runners, restricted environment deploy, platform team handoff, onboarding path gate. DO NOT USE FOR: deploying the central Citadel hub / shared AI gateway (use threadlight-citadel-hub); wiring a pilot to an existing hub (use threadlight-citadel-spoke); the first-run sandbox deploy (use threadlight-deploy).
- License
- MIT
- Metadata
- version: 0.6.0
- Instructions
- 298 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (45)
- SKILL.md
- agentops-runtime.md · references/
- azure-pipelines.yml.tmpl · references/azure-devops/
- best-practices.md · references/
- central-platform-boundary.md.tmpl · references/
- 01-uami-federated-credentials.azure-devops.md.tmpl · references/env-setup/
- 01-uami-federated-credentials.azure-devops.sh.tmpl · references/env-setup/
- 01-uami-federated-credentials.github-actions.md.tmpl · references/env-setup/
- 01-uami-federated-credentials.github-actions.sh.tmpl · references/env-setup/
- 02-rbac-role-assignments.md.tmpl · references/env-setup/
- 02-rbac-role-assignments.sh.tmpl · references/env-setup/
- 03-runners-private-vnet.md.tmpl · references/env-setup/
- 03-runners-private-vnet.sh.tmpl · references/env-setup/
- README.md.tmpl · references/env-setup/
- azd-deploy-prod.yml.tmpl · references/github-actions/
- onboarding-path-decision.md · references/
- pipeline-design-checklist.md · references/
- release-contract.md · references/
- agentops_runtime.py · scripts/
- generate_pipeline.py · scripts/
- release_agentops.py · scripts/
- release_runner.py · scripts/
- returns_gateway_operator.py · scripts/
- returns_release.py · scripts/
- native_observer_fixture.py · tests/
- test_agentops_gate.py · tests/
- test_central_boundary.py · tests/
- test_env_runbooks.py · tests/
- test_eval_gate.py · tests/
- test_generate_azuredevops.py · tests/
- test_generate_github.py · tests/
- test_mcp_gate.py · tests/
- test_native_context.py · tests/
- test_native_observer_route.py · tests/
- test_native_release_local.py · tests/
- test_no_secrets_in_templates.py · tests/
- test_onboarding_gate.py · tests/
- test_release_acceptance.py · tests/
- test_release_agentops.py · tests/
- test_release_runner.py · tests/
- test_returns_gateway_operator.py · tests/
- test_returns_release.py · tests/
- test_returns_release_process.py · tests/
- test_verified_pipeline.py · tests/
- test_version.py · tests/
SKILL.md (first lines)
# Threadlight CI/CD — verified release + environment setup
> The skill that answers "**how does this pilot actually deploy to production
> when the agent can't run `azd up` and has no standing rights?**" — by
> validating a separate preproduction candidate, then promoting its immutable
> image through a protected production job. The federated-identity pipeline and
> runbooks define the separation. The customer's platform team configures the
> identity, permissions, and
> runners. Secret-free by construction; parallel-track-safe by design.
## When to use
- The pilot's prod environment is **locked down**: direct writes are restricted,
deploys must go through a pipeline, and the agent has no deploy rights.
- You need a **GitHub Actions or Azure DevOps** prod-deploy pipeline that logs in
with **OIDC / Workload Identity Federation** (no `AZURE_CREDENTIALS`, no client
secret, no PAT).
- The platform team needs **ready-to-run `az` runbooks** for the UAMI, federated
credentials, least-privilege RBAC, and (for private VNets) the runners.
- You must make the **central-platform boundary** explicit so the pilot pipeline
never touches the Citadel hub.
**When NOT to use:** deploying the hub itself (`threadlight-citadel-hub`), onboarding a
spoke onto an existing hub (`threadlight-citadel-spoke`), the permissive first-run
deploy (`threadlight-deploy`), or the readiness scorecard
(`threadlight-production-ready`). See the description's DO NOT USE FOR list.
## Onboarding-path decision gate (runs FIRST)
Before generating anything, resolve which track the pilot is on. `resolve_onboarding_path()`
branches on two questions and is the source of truth for posture + RBAC scope:
```
Is a central platform env required? (Citadel hub / shared AI gateway /
shared networking / platform Key Vault)
│
├─ no ──────────────────► standalone (validate target sub/RG, shared-resource
│ usage, network exposure FIRST)
│ posture: standard-ai-gateway | agt | direct
│ RBAC scope: target-rg
│
└─ yes ─► already deployed?
│
├─ yes ─────────► spoke-onboard (consume hub via Access Contract →
│ threadlight-citadel-spoke)
│ posture: citadel-spoke · RBAC scope: spoke-rg
│
└─ no ─────────► hub-deploy-then-spoke
(stand up hub on the SEPARATE central
track → threadlight-citadel-hub, THEN
threadlight-citadel-spoke)
posture: citadel-spoke · RBAC scope: spoke-rg
```
**Invariant:** a spoke pilot's deploy identity is scoped to the **spoke resource
group only** — never the hub, regardless of whether the hub already exists. The
resolved decision is written to `docs/threadlight-cicd/onboarding-path.json` so
the choice is auditable.
## Parallel-track boundary (the must-tell)
The pilot pipeline is a **separate repo and pipeline** from the central platform.
| Concern | Owner | Track / skill |
|---|---|---|
| Citadel hub, shared APIM AI gateway, shared networking, platform Key Vault | Central platform team | **`threadlight-citadel-hub`** (Threadlight-owned, separate repo) |
| Wire the pilot to consume the hub via an Access Contract | Platform / SE | **`threadlight-citadel-spoke`** |
| Deploy the pilot's **use-case** resources into the spoke/target RG | This pipeline | **`threadlight-cicd`** |
The generated `central-platform-boundary.md` states the pilot pipeline **must not**
deploy or modify the hub, and that its UAMI RBAC is **spoke-RG-scoped only**.
```mermaid
flowchart LR
subgraph central["Central platform repo (separate)"]
HUB["threadlight-citadel-hub<br/>hub · shared APIM · networking · KV"]
end
subgraph pilot["Pilot repo (this pipeline)"]
PIPE["threadlight-cicd<br/>azd-deploy-prod → spoke/target RG only"]
end
HUB -. "Access Contract<br/>(threadlight-citadel-spoke)" .-> PIPE
PIPE -. "never writes" .-x HUB
```
## Quick reference
| Goal | Command |
|---|---|
| Interactive onboarding-path gate + generate | `python scripts/generate_pipeline.py --onboard` |
| GitHub Actions, standalone (public) | `python scripts/generate_pipeline.py --platform github-actions --central-env-required no --repo-full-name owner/repo --target-sub <sub> --target-rg <rg> --tenant-id <tid>` |
| Azure DevOps, spoke onto existing hub | `python scripts/generate_pipeline.py --platform azure-devops --central-env-required yes --central-env-exists yes --ado-org <org> --ado-project <proj> --ado-service-connection <sc> --target-sub <sub> --target-rg <rg> --tenant-id <tid> --hub-sub <hsub> --hub-apim-id <apim-id> --access-contract-product <product>` |
| Private-VNet target (self-hosted / managed pool) | add `--private-network` (and `--ado-pool-name <pool>` for ADO) |
| Validation target | add `--validation-env-name`, `--validation-sub`, `--validation-rg` and `--validation-client-id` or `--validation-service-connection` |
| Required release checks | Always blocking; legacy `--eval-gate hard` / `--mcp-gate hard` remain accepted, but soft or invalid modes fail |
| Approved producer/promotion contract | `--release-policy specs/release-policy.json`; see [release contract](references/release-contract.md) |
| Selected two-tool returns reference | `--reference-application returns-mcp/v1`; emits concrete adapter composition and a deliberately incomplete operator configuration |
| Optional AgentOps integration | `--agentops auto` (default; no opt-in means no pipeline change) or `--agentops off` |
| Explicit post-deploy Doctor opt-in | add `--agentops-refresh-doctor`; runtime owner approval and existing application telemetry scope are still required |
| Doctor-only schedule | add `--agentops-refresh-doctor --agentops-doctor-schedule "0 6 * * *"`; never schedules deployment |
| From a saved framing file | `--framing-file framing.json` |
| Run the test suite | `python -m pytest tests/ -v` |
> If `python` resolves to Python 2 on your machine, use `python3` (the generator
> renderer uses Python 3 stdlib; optional AgentOps authoritative service
> discovery uses the shared contract and PyYAML).
**Spoke flags:** `--hub-sub` / `--hub-apim-id` / `--access-contract-product` surface
the hub coordinates the platform team needs to wire the Access Contract; they are
echoed into `central-platform-boundary.md` and the runbooks (never used to deploy
the hub).
## What it emits
Rendered deterministically (offline, no Azure calls, no secrets) into the pilot repo:
- **Pipeline** — `.github/workflows/azd-deploy-prod.yml` or `azure-pipelines.yml`.
`validation` prepares an isolated candidate, executes configured real
producers and the supplied MCP checker, then enforces required domains.
`promotion` depends on that success and uses a different protectedFrom aiappsgbb/threadlight-skills, MIT.
More from aiappsgbb/threadlight-skills
- 0.603score
threadlight-connect
aiappsgbb
CONNECT-leg: evidence-based swap of a scaffolded mock Foundry tool for a real endpoint.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-governed-actions
aiappsgbb
Use when a pilot needs consequential-action runtime implementation or evidence: selected native hooks, gateway effect closure, action inventory, pre-deploy…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-govern
aiappsgbb
Use when a Threadlight pilot needs native ACS/Rego policy, SAFE business invariants, selected tool or lifecycle bindings, approval requirements, signed policy…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-evals
aiappsgbb
Threadlight evals leg: offline batch quality, Foundry Continuous Evaluation and champion-challenger gates.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-consumption-iq
aiappsgbb
Project Azure cost from deployed Bicep + SPEC § 12, compare viable SKUs, and emit cost-projection.md + cost-manifest.json after safe-check.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
threadlight-demo-data-factory
aiappsgbb
Generate per-domain Faker-style synthetic data + Cosmos seed/reset scripts for a threadlight process.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
threadlight-customize
aiappsgbb
Use when an SE or a customer's platform team needs to FORK the Threadlight pipeline and adapt it to one customer's environment — landing zones, identity…
SkillAFreshness: A★ 2Claude Code +9 - 0.594score
threadlight-citadel-hub
aiappsgbb
Threadlight-owned port (from awesome-gbb's Citadel hub skill): deploy the AI Citadel Governance Hub (Layer 1) for a Threadlight pilot, using an APIM gateway…
SkillAFreshness: A★ 2Claude Code +9 - 0.590score
threadlight-citadel-spoke
aiappsgbb
Threadlight-owned port (from awesome-gbb's Citadel spoke skill): onboard a Threadlight pilot's Foundry project as a spoke of an existing AI Citadel Governance…
SkillAFreshness: A★ 2Claude Code +9 - 0.590score
threadlight-auto
aiappsgbb
Full-auto driver for the Threadlight pilot pipeline.
SkillAFreshness: A★ 2Claude Code +9 - 0.590score
threadlight-deploy
aiappsgbb
Generate deployment artifacts for a designed Threadlight project on Microsoft Foundry Hosted Agents: container.py, Dockerfile, pyproject.toml, an azd project…
SkillAFreshness: A★ 2Claude Code +9 - 0.590score
threadlight-design
aiappsgbb
Spec out a business process or customer use case for an enterprise pilot, then generate agent architecture (AGENTS.md + Skills) — a SpecKit specification…
SkillAFreshness: A★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 5
- Open issues
- 5
- Last commit (this folder)
- Oct 6, 2026 (22 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 0.6.0
- License
- MIT
- Repository
- github.com/aiappsgbb/threadlight-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from aiappsgbb
- 0.603score
threadlight-govern
aiappsgbb
Use when a Threadlight pilot needs native ACS/Rego policy, SAFE business invariants, selected tool or lifecycle bindings, approval requirements, signed policy…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-governed-actions
aiappsgbb
Use when a pilot needs consequential-action runtime implementation or evidence: selected native hooks, gateway effect closure, action inventory, pre-deploy…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-evals
aiappsgbb
Threadlight evals leg: offline batch quality, Foundry Continuous Evaluation and champion-challenger gates.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-consumption-iq
aiappsgbb
Project Azure cost from deployed Bicep + SPEC § 12, compare viable SKUs, and emit cost-projection.md + cost-manifest.json after safe-check.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-connect
aiappsgbb
CONNECT-leg: evidence-based swap of a scaffolded mock Foundry tool for a real endpoint.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
threadlight-customize
aiappsgbb
Use when an SE or a customer's platform team needs to FORK the Threadlight pipeline and adapt it to one customer's environment — landing zones, identity…
SkillAFreshness: A★ 2Claude Code +9
Cite this page
threadlight-cicd skill. Agent Mart. https://agentmart.dev/skills/aiappsgbb-threadlight-cicd (last updated 2026-10-24)