Skip to main content

threadlight-customize

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, RBAC, deploy pipelines, governance — with PRODUCTION ONBOARDING as priority #1. An instructions/runbooks skill (not automation): intake gate, customization map (keep vs per-customer-override), test-in-customer-environment runbook for private-VNet envs, and a fork-runbook (upstream-pin + overlay merge). USE FOR: fork threadlight, customize threadlight, customer onboarding, production onboarding, onboard a customer, adapt the pipeline, tailor threadlight, customer landing zone, customer RBAC, customization map, what to fork vs keep, upstream pin, overlay merge, test in customer environment. DO NOT USE FOR: generating the prod deploy pipeline (use threadlight-cicd); the readiness scorecard (use threadlight-production-ready); the first-run deploy (use threadlight-deploy); a central hub (use citadel-spoke-onboarding / citadel-hub-deploy).

Jump to install

Source facts

Repository
aiappsgbb/threadlight-skills
Last source activity
June 26, 2026 at 21:46
Detected SKILL.md language
English
Stars
1
Forks
5

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
12 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
threadlight-customize
description
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, RBAC, deploy pipelines, governance — with PRODUCTION ONBOARDING as priority #1. An instructions/runbooks skill (not automation): intake gate, customization map (keep vs per-customer-override), test-in-customer-environment runbook for private-VNet envs, and a fork-runbook (upstream-pin + overlay merge). USE FOR: fork threadlight, customize threadlight, customer onboarding, production onboarding, onboard a customer, adapt the pipeline, tailor threadlight, customer landing zone, customer RBAC, customization map, what to fork vs keep, upstream pin, overlay merge, test in customer environment. DO NOT USE FOR: generating the prod deploy pipeline (use threadlight-cicd); the readiness scorecard (use threadlight-production-ready); the first-run deploy (use threadlight-deploy); a central hub (use citadel-spoke-onboarding / citadel-hub-deploy).
metadata
{"version":"0.1.0"}
# Threadlight Customize — fork the pipeline, onboard a real customer > The final leg. It answers "**how do I take Threadlight and stand it up > inside *this* customer — their landing zones, their RBAC, their pipelines, > their governance — and actually test it on *their* environment?**" It does > this with **instructions and fill-in runbooks, not automation.** Production > onboarding is too high-variance to encode; this skill gives you the frame, > the intake, and the customer-env test loop, then gets out of the way. ## Why this skill exists (and why it is not a generator) Every other Threadlight skill is opinionated and deterministic because its inputs are bounded (a SPEC section, a set of selectors, an `azd env`). The **production onboarding of a specific customer is not bounded.** Their landing-zone topology, identity model, allowed regions, private DNS, egress rules, mandated IaC modules, change-management gates, and approval chains are all theirs — and no two are the same. Trying to cover every permutation in code produces a generator that is wrong for everyone. So this skill is **prose + templates**. It captures what you must learn from the customer, tells you which Threadlight skills to fork-and-override vs keep as-is, and shows you how to run the dev/test loop **inside the customer's boundary** (the part the field kept getting stuck on). What it deliberately does **not** do is generate the onboarding for you. See [`references/non-coverage.md`](references/non-coverage.md) — that honesty is a feature. ## Where it sits in the pipeline ``` … → threadlight-production-ready (advisory gate) → threadlight-cicd (prod-deploy pipeline, locked-down env) → threadlight-customize ◄── you are here (fork + customer onboarding) ``` It is a **manual handoff leg**, like `threadlight-cicd`. **`threadlight-auto` does not drive it** — `auto` is a pilot driver, not a customer-onboarding orchestrator. Run it when the pilot has proven out and the conversation turns to "now make this live inside *our* environment." You can also start the **intake gate (Move 1) early**, in parallel with the pilot, because the intake is the long pole. ## Audience Written for **two operators**, SE-led path first: - **SE / GBB (primary).** You fork Threadlight, run the intake with the customer, customize the production-onboarding leg, and run the test loop inside their environment. - **Customer platform / engineering team (secondary).** Everything here is also a self-serve runbook a customer team can follow to adopt Threadlight internally. Where the two paths differ, the step says so. ## The four moves Run them in order. Each move produces one durable artifact under `docs/threadlight-customize/` so the engagement is auditable and resumable. ### Move 1 — Intake gate (the long pole) **You cannot customize what you have not been given.** The field's #1 blocker was getting the customer inputs, not writing code. Open the engagement by filling in the intake workbook **with** the customer: - Copy [`references/customer-profile.md.tmpl`](references/customer-profile.md.tmpl) to `docs/threadlight-customize/customer-profile.md`. - Work it top to bottom with the customer's cloud/platform owner. It has four blocks: **customer documents**, **environment setup**, **requirements**, and **mandated template/starter code**. - Treat every unfilled field as a **blocker**, not a TODO. A blank "private DNS zones" or "allowed regions" line will stop the deploy later; surface it now. The workbook is the single source of truth every later move reads. Do not proceed to Move 2 until the **environment setup** and **mandated template code** blocks are complete — those two drive every override decision. ### Move 2 — Customization map (what to fork vs keep) Decide, per skill, what you change and what you leave alone. Read [`references/customization-map.md`](references/customization-map.md): it classifies every Threadlight skill as **customer-agnostic (keep as-is)** or **needs per-customer override**, and names the exact SPEC section / selector / `azd env` hook to change. **Production-onboarding skills are priority #1** — they are where the customer's environment actually bites: | Skill | Typical customer override | |---|---| | `threadlight-deploy` | landing-zone targeting (sub/RG), resource selectors, region allow-list, private-endpoint + private-DNS wiring | | `threadlight-safe-check` | customer resource selectors + naming standard the gate validates against | | `threadlight-cicd` | pipeline shape, federated identity model, scoped RBAC, runner topology (this skill *generates* it; you feed it the customer's constraints) | | `threadlight-production-ready` | pillar thresholds + `customer_overrides` to match the customer's policy baseline | Capture the decisions in `docs/threadlight-customize/customization-map.md` (copy the table from the reference and fill the right-hand column). Keep your overrides in an **overlay**, not by editing forked skills in place — see the fork runbook below — so you can still pull upstream Threadlight updates. ### Move 3 — Test it on the customer's environment The pilot proves the agent works on an SE sandbox. Production onboarding only proves out when you can run the loop **inside the customer's boundary** — often a **fully-private (private-VNet) environment** with no public egress. This is the move the field repeatedly got stuck on; two patterns work: - **GitHub Codespaces** (private networking) — [`references/private-env-test/codespaces.md`](references/private-env-test/codespaces.md). - **Azure ML compute instance + VS Code (Remote)** — [`references/private-env-test/azure-ml-vscode.md`](references/private-env-test/azure-ml-vscode.md). Before you run the Threadlight `local-test` / `deploy` loop from inside the boundary, work the pre-flight in [`references/private-env-test/private-vnet-checklist.md`](references/private-env-test/private-vnet-checklist.md): private DNS resolution, egress posture, and reachability of the Foundry, ACR, Cosmos, and Key Vault **private endpoints**. A green pre-flight is the gate to running deploy — a half-resolved private DNS zone fails the deploy in a way that looks like an auth error and burns an afternoon. ### Move 4 — Name the boundary (what we do NOT automate) Close the engagement honestly. Fill in [`references/non-coverage.md`](references/non-coverage.md): the **seams you customized** (so the next SE can read the diff) and what Threadlight **deliberately does not automate** for this customer, plus a short decision log. This keeps expectations calibrated for the customer's CISO/architecture review and stops the next engagement from assuming the onboarding is turnkey. ## Fork mechanics (do this once, up front) Fork Threadlight the way that survives upstream updates. The full runbook is [`references/fork-runbook.md`](references/fork-runbook.md); the shape: 1. **Fork** the `threadlight-skills` repo (or install the plugin and overlay alongside it) into the customer's org / your engagement repo. 2. **Pin upstream.** Record the upstream commit you forked from — a lightweight fork-pin analogous in spirit to the `references/upstream-pin.md` freshness records that `threadlight-deploy` and `threadlight-local-test` keep for the sources they vendor. 3. **Overlay, don't fork-edit.** Keep customer overrides (selectors, env hooks, thresholds, mandated IaC) in a separate overlay directory layered over the pinned upstream, so a later `git merge` of upstream Threadlight does not clobber the customer's customizations. ## Quick reference | Move | Read | Produces | |---|---|---| | 0 — fork | `references/fork-runbook.md` | forked repo + `upstream-pin.md` | | 1 — intake | `references/customer-profile.md.tmpl` | `docs/threadlight-customize/customer-profile.md` | | 2 — map | `references/customization-map.md` | `docs/threadlight-customize/customization-map.md` | | 3 — test | `references/private-env-test/*` | a green private-VNet pre-flight + a test run inside the customer env | | 4 — boundary | `references/non-coverage.md` | `docs/threadlight-customize/non-coverage.md` | ## Common mistakes - **Treating intake as a formality.** The intake gate is the engagement's critical path. A blank field in the customer profile is a future blocked deploy. Fill it before you write a single override. - **Editing forked skills in place.** You will want upstream fixes later; in-place edits make the merge a nightmare. Use the overlay. - **Testing only on the SE sandbox.** A pilot that passes on your sandbox and has never run inside the customer's private VNet is not onboarded. Move 3 is not optional. - **Pretending the onboarding is automated.** It is not, by design. If you find yourself writing a generator that branches on the customer's landing zone, stop — that is the seam this skill exists to keep as instructions. - **Letting `threadlight-auto` drive this.** It is a manual leg. `auto` stops at the pilot; the customer onboarding is a human-led handoff. ## References - [`references/customer-profile.md.tmpl`](references/customer-profile.md.tmpl) — the Move 1 intake workbook (documents, env setup, requirements, mandated template code). - [`references/customization-map.md`](references/customization-map.md) — the Move 2 fork-vs-keep classification, production-onboarding skills flagged priority. - [`references/private-env-test/`](references/private-env-test/) — the Move 3 runbooks: `codespaces.md`, `azure-ml-vscode.md`, `private-vnet-checklist.md`. - [`references/non-coverage.md`](references/non-coverage.md) — the Move 4 boundary + decision-log template. - [`references/fork-runbook.md`](references/fork-runbook.md) — fork + upstream-pin + overlay-merge mechanics. - [`references/field-notes-telco-pilot.md`](references/field-notes-telco-pilot.md) — anonymized learnings from a large telco AI pilot that shaped this leg.
View on GitHub