threadlight-citadel-spoke
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…
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-citadel-spoke
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: documents, backend, devops, cloud
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. Checked Oct 25, 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-citadel-spoke
What's inside
- Skill name
threadlight-citadel-spoke- Description
- 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 Hub. Covers access contracts, APIM connections, product policies and JWT auth; threadlight-deploy's opt-in Phase 7. No official azure-skills equivalent. USE FOR: citadel spoke onboarding, access contract, connect Foundry to Citadel, APIM connection, bring your own AI gateway, citadel JWT auth. DO NOT USE FOR: deploying the hub (use threadlight-citadel-hub), backend pools or hub policy fragments, spoke VNet or peering creation (use microsoft-foundry), a standalone AI Gateway or token limit policy (use azure-aigateway).
- License
- MIT
- Metadata
- version: 2.0.0 · provenance: awesome-gbb@7f1de882 (MIT) — see PROVENANCE.md
- Instructions
- 1,025 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- body: 1025 lines (spec recommends under 500)
- files: referenced but missing: scripts/tests/test_citadel_access_contract_probe.py, scripts/tests/test_citadel_spoke_contract.py
Files (6)
- PROVENANCE.md
- SKILL.md
- __init__.py · references/python/
- access_contract_probe.py · references/python/
- upstream-pin.md · references/
- manual_consumer_prompt.md · test-fixture/
SKILL.md (first lines)
# Citadel Spoke Onboarding — Reference Guide
How to connect a GenAI application or Microsoft Foundry project to an
**existing** AI Citadel Governance Hub. Controls cover the traffic actually routed
through the gateway, not every agent action or a compliance certification.
> **Threadlight integration**: This skill is the **opt-in Phase 7** of
> `threadlight-deploy`. It runs ONLY when SPEC § 11b sets
> `governance_hub.required: yes` (the SPEC field is generic; the AI
> Citadel hub is one reference implementation). The base agent deploy
> (Phase 5 + 6) lands in the customer's tenant first; this skill
> onboards it as a hub spoke afterwards as an additive step. Read
> SPEC § 11b for the per-process governance posture (hub endpoint,
> access contracts, JWT requirements, secret wiring).
>
> **Threadlight pilots MUST use Option B (Foundry Connection)** — see
> `Consuming the Gateway from Your App` below. Option A (Key Vault
> secret pull) violates the keyless-by-mandate posture: it requires
> the agent to hold an APIM subscription key and read it from KV at
> runtime. Option B threads the call through a Foundry APIM connection
> so the agent does not retrieve the subscription key. The pinned connection
> uses `authType: ApiKey`; this is **not end-to-end keyless**. Caller-to-Foundry
> Entra authentication, connection-managed secret custody and downstream APIM
> authentication are separate boundaries. JWT requires its own approved setup
> and positive/negative runtime evidence; no MI-to-APIM JWT flow is implied.
> If a customer insists on
> Option A for a non-threadlight reason, document the deviation in
> SPEC § 11b explicitly.
> **Source:** [exact hub/spoke revision](https://github.com/Azure-Samples/ai-hub-gateway-solution-accelerator/tree/63f0f812474e713916dc909494d655246783a1d9).
> The [pin record](references/upstream-pin.md) separates source comparison from
> live compatibility. `citadel-v1` is a freshness signal, not a deployment input.
> **Quick link:** <https://aka.ms/ai-hub-gateway>
---
## Key Concepts
| Term | Meaning |
|------|---------|
| **Citadel Governance Hub** | Central control plane with Azure API Management (APIM) acting as the unified AI gateway. Already deployed — not your concern here. |
| **Spoke** | An isolated workload environment (Foundry project, Container App, Function, etc.) that consumes AI services **through** the hub gateway. |
| **Access Contract** | A Bicep parameter file (`.bicepparam`) + optional policy XML declaring what AI services a spoke needs, with what policies. Deployed as IaC. |
| **Foundry Connection** | An APIM-type connection inside an Azure AI Foundry project that routes model calls through the Citadel gateway. |
| **Service Code** | Short acronym mapping a category of AI services to APIM API IDs (e.g. `LLM`, `DOC`, `SRCH`, `OAIRT`). |
---
## What Gets Created Per Access Contract
| Resource | Naming Pattern | Description |
|----------|----------------|-------------|
| **APIM Product** | `{code}-{BU}-{UseCase}-{ENV}` | One per service code, with attached APIs and policies |
| **APIM Subscription** | `{product}-SUB-01` | Subscription with API key |
| **Key Vault Secrets** (optional) | `{secretName}` | Endpoint URL + API key stored in KV |
| **Foundry Connection** (optional) | `{prefix}-{code}` | APIM connection for Foundry agents |
---
## Prerequisites (Spoke Side)
| Requirement | Details |
|-------------|---------|
| Running Citadel Hub | APIM deployed with published APIs matching your `apiNameMapping` |
| Azure CLI + Bicep | Latest version with `az deployment sub create` support |
| Permissions | `API Management Service Contributor` on APIM RG, `Key Vault Secrets Officer` on target KV (if used), `Contributor` on Foundry RG (if using Foundry connections) |
| Foundry Project | Must exist if you want APIM connections inside Foundry |
Before any operator Azure call, apply
[`threadlight-tenant-isolation`](../threadlight-tenant-isolation/SKILL.md): paired isolated
CLI/AZD context and the approved exact tenant/subscription. Assert the target
immediately before writes. Read-only inventory grants no repair authority.
---
## Step-by-Step: Create an Access Contract
### 1. Scaffold the Contract Folder
Materialize the exact reviewed hub revision, then follow
`contracts/<businessunit-usecasename>/<environment>/`. Do not overwrite an existing
checkout, deployed contract or policy to align a pin.
```bash
PINNED_SHA="63f0f812474e713916dc909494d655246783a1d9"
git clone --filter=blob:none --no-checkout https://github.com/Azure-Samples/ai-hub-gateway-solution-accelerator.git
cd ai-hub-gateway-solution-accelerator
git fetch --depth 1 origin "$PINNED_SHA"
git checkout --detach "$PINNED_SHA"
test "$(git rev-parse HEAD)" = "$PINNED_SHA"
cd bicep/infra/citadel-access-contracts
# Create contract folder
mkdir -p contracts/myteam-myagent/dev
cd contracts/myteam-myagent/dev
# Copy templates
cp ../../../main.bicepparam main.bicepparam
cp ../../../policies/default-ai-product-policy.xml ai-product-policy.xml
```
> 📂 Full contract folder structure and module reference:
> [citadel-access-contracts/](https://github.com/Azure-Samples/ai-hub-gateway-solution-accelerator/tree/citadel-v1/bicep/infra/citadel-access-contracts)
>
> ⚠️ Sample contracts were removed from the repo. Use `main.bicepparam` as your template base.
> Review `allowedModels` explicitly: this revision's default LLM policy allows
> `gpt-4.1,gpt-5.4-mini`, unlike the older policy's broader list. Existing
> approved policies are not replaced automatically. Leave optional key rotation
> and additional-gateway settings disabled unless separately approved.
### 2. Configure the Parameter File
Edit `main.bicepparam`:
```bicep
using '../../../main.bicep'
// ── Hub coordinates (get these from your platform team) ──
param apim = {From aiappsgbb/threadlight-skills, MIT.
More from aiappsgbb/threadlight-skills
- 0.603score
threadlight-cicd
aiappsgbb
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…
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.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-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-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 (23 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 2.0.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-evals
aiappsgbb
Threadlight evals leg: offline batch quality, Foundry Continuous Evaluation and champion-challenger gates.
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-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-cicd
aiappsgbb
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…
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.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
Cite this page
threadlight-citadel-spoke skill. Agent Mart. https://agentmart.dev/skills/aiappsgbb-threadlight-citadel-spoke (last updated 2026-10-24)