LFX
Find which LFX repos are needed for a task, load their configs, give
cross-repo guidance, or answer LFX questions.
Four scenarios:
- Load configs for multi-repo work (workspace-root invocation with a
full task prompt or JIRA ticket).
- Give guidance when an agent inside a single repo needs cross-repo
knowledge.
- Answer questions about LFX when no edits are coming.
- Research before implementation when the user asks what exists, what a
task would touch, or whether an upstream contract supports a change.
Finding the LFX workspace root
The workspace root (parent directory containing all LFX repo checkouts)
varies per user (~/lfx/, ~/lf/, etc.). Find it before referencing
peer-repo paths. Ask the user if unsure (and offer /lfx-skills:lfx-setup to persist).
Use $LFX_DEV_ROOT throughout this skill's paths.
If a required repo is not present at $LFX_DEV_ROOT/<repo>, read its
GitHub: URL from references/repo-map.md and clone it into the workspace
root:
git clone <github-url> "$LFX_DEV_ROOT/<repo>"
If the clone fails because of auth, network, or missing access, report that
repo as blocked. Do not replace the missing repo with central implementation
guesses.
How LFX fits together (high-level)
LFX is the Linux Foundation's project-management platform. Three main layers:
- Self Serve / LFX One (
lfx-self-serve): user-facing product (Angular 20
SSR + Express BFF + @lfx-one/shared). Consumes V2 APIs.
- V2 platform (~14 Go services): resource services own domain (project,
committee, meeting, vote, survey, mailing-list, member); platform services
compose (fga-sync, indexer, query, access-check, auth). Built on Goa + NATS
- KV + OpenFGA. Writes publish contracts to fga-sync (access tuples) and
indexer (search documents).
- Deployment: GitOps via ArgoCD. Service-local Helm charts per repo;
umbrella chart + OpenFGA model in
lfx-v2-helm; values, image tags, and
ApplicationSets in lfx-v2-argocd. Auth0 emits JWTs, Heimdall enforces
ruleset checks per route, fga-sync answers access decisions.
Depth lives in the sibling skills below.
Workflow
Three steps apply to every scenario:
- Classify the task or question. Read
references/glossary.md if any
LFX term is unclear.
- Identify the primary repo via
references/repo-map.md. The primary
is where most edits happen and whose local instructions govern.
- Identify peer repos (if any) via
repo-map.md plus (when ambiguous)
routing-playbook.md. Add peers only for contracts, generated APIs,
FGA/indexer data, deployment values, or product consumption that matter.
- Resolve missing checkouts by cloning the
GitHub: URL listed in
repo-map.md when a primary or required peer repo is absent locally.
- Read owned truth from the owner repo. Use
CLAUDE.md for local work
mode and the top-level docs/ files it names for contracts and other
repo-owned truth that other agents may consume.
Then, depending on context:
Workspace-root invocation (full task prompt, JIRA ticket, etc.)
The primary mode for multi-repo work. Load configs for the primary repo and
each peer.
For each repo:
- If
$LFX_DEV_ROOT/<repo> is missing, clone the repo from the GitHub: URL
in references/repo-map.md, then continue with local reads.
- Load
$LFX_DEV_ROOT/<repo>/CLAUDE.md
- Load
$LFX_DEV_ROOT/<repo>/.claude/rules/ for path-scoped conventions
- Load
$LFX_DEV_ROOT/<repo>/.claude/skills/ for available workflows
- Read the top-level
docs/ contract files named by that repo's CLAUDE.md
when cross-repo contracts, payloads, subjects, chart handoffs,
integrations, or deployment surfaces matter.
- Browse
$LFX_DEV_ROOT/<repo>/docs/agent-guidance/ only when
references/repo-map.md explicitly lists that path as a transitional owner
location for the repo. For Self Serve, use docs/architecture/ when
CLAUDE.md or local skills point there.
Work continues in the same session with the loaded context.
Single-repo invocation (cross-repo knowledge request)
Give targeted guidance: name the specific peer-repo files the asking agent
should read (at $LFX_DEV_ROOT/<peer-repo>/<path>) and any constraints to
apply. Skip the full config load; the asking agent's session is what matters
and may not need everything. If the work is genuinely multi-repo, recommend
relaunching from $LFX_DEV_ROOT.
Cross-repo contract lookup
Use this protocol when an agent in one repo needs a contract, payload, subject,
chart surface, deployment handoff, or integration detail owned by another repo.
Do not infer cross-repo contracts from local examples.
- Resolve the owner repo using
references/repo-map.md.
- If
$LFX_DEV_ROOT/<owner-repo> is missing, clone the GitHub: URL from
repo-map.md into the workspace root.
- Read
references/contract-ownership.md for the exact owner files for the
contract, payload, subject, chart surface, deployment handoff, or integration
detail being checked.
- Read
$LFX_DEV_ROOT/<owner-repo>/CLAUDE.md or AGENTS.md for that repo's
local context order.
- Read the top-level
docs/ files named by that repo's CLAUDE.md for the
relevant owned contract.
- Prefer stable top-level contract docs such as
docs/fga-contract.md,
docs/indexer-contract.md, docs/fga-sync-contract.md,
docs/query-service-contract.md, or docs/service-chart-patterns.md
when present.
- Report the exact owner file read. If the path is absent, report a
repo-readiness gap instead of substituting central guidance.
Pure question (no edits coming)
Use references plus forward to sibling skills for depth. Skip the full
config load.
Research before implementation
Use this mode for read-only discovery before an implementation starts. It
preserves the useful research workflow without adding another central skill.
- Route the task to the primary repo and required peers using the repo map.
- Ensure the required repos are available locally; clone missing repos from
their
GitHub: URLs if needed.
- Read the owning repo's local truth:
CLAUDE.md or AGENTS.md, relevant
top-level docs/ contract files, .claude/skills/, .claude/rules/,
docs/architecture/, generated contracts, chart templates, or event docs.
Use docs/agent-guidance/ only where repo-map.md explicitly lists it as a
transitional owner location.
- Validate whether the needed API, event, field, relation, index document,
query shape, chart value, or deployment reference exists.
- Find the closest existing example in the owning repo first. Use peer repos
only when the owner points to them as canonical examples.
- Return concise findings:
## Research Findings
**Primary repo:** <repo> - <why it owns the work>
**Peers:** <repo list or none> - <why each matters>
**Contract status:** <exists / partial / missing>. <path, method, subject, field, relation, value>
**Local truth read:** <CLAUDE/rules/skills/docs paths>
**Closest example:** <path> - <why it matches>
**Likely files:** <paths or "implementation belongs in repo-local workflow">
**Blockers:** <none or concrete missing contract/access/repo issue>
**Next step:** <repo-local skill or central skill to use next>
How to use the references
references/glossary.md: read FIRST if an LFX term is unclear (Goa,
Heimdall, FGA, OpenFGA, OpenSearch, etc.). Skip for routing decisions.
references/repo-map.md: the primary tool for identifying primary
and peer repos. Match task nouns to "route when the task mentions" phrases.
references/contract-ownership.md: read after repo-map.md when an
agent needs the exact owner and file path for a cross-repo contract,
payload, subject, chart surface, deployment handoff, integration detail, or
other repo-owned truth.
references/routing-playbook.md: read only when repo-map.md doesn't
give a clear answer or when the task spans multiple repos. Contains
concrete primary/peer examples.
references/deployment-routing.md: read INSTEAD of repo-map.md for
deployment-related tasks (charts, ApplicationSets, image tags, environment
values). It's the deployment-specific decision tree.
references/topology.md: thin routing stub. For platform-shape depth,
forward to /lfx-skills:lfx-platform-architecture instead of expanding it.
references/service-types.md: thin routing stub. For native, wrapper,
proxy, or V2 Go service-class depth, forward to
/lfx-skills:lfx-platform-architecture.
references/data-privacy.md: canonical hard rules for handling PII in
test data, logs, persisted stores, tickets, PRs, and code comments. Read
before generating fixtures/examples, before adding a log line that includes
a user field, or before writing a user identifier into a KV, index doc,
FGA tuple, or Jira ticket.
Never load all references by default. Start with the smallest one.
Sibling central skills
Each auto-fires on its own triggers; can also be invoked explicitly. These
ship in this same lfx-skills plugin.
| Topic |
Skill |
| Platform composition, V2 service classes, write/read/access-check flows, cross-repo owners |
/lfx-skills:lfx-platform-architecture |
| Go coding conventions after routing to a service repo |
That repo's path-scoped <short-repo-name>-dev skill |
| ITX wrapper plumbing (OAuth2 M2M, ID mapping, v1 KV sync) |
/lfx-skills:lfx-itx-integration |
| Intercom app workflow and Fin AI optimization |
/lfx-skills:lfx-intercom |
| Object storage capability in a service (uploads, S3, CDN, local dev) |
/lfx-skills:lfx-object-store-design |
| Object storage backend provisioning (buckets, CloudFront, IRSA) |
/lfx-skills:lfx-object-store-ops |
-ops skill convention
Skills whose names end in -ops are written for members of the
linuxfoundation GitHub org (Ops/infrastructure audience). They are
provided for that audience's use and are not gated by the skill itself.
Before routing a task to an -ops skill, check whether the current GitHub
user is an org member (for example, gh api orgs/linuxfoundation/members/$(gh api user -q .login) — a 204 means
member). If membership cannot be confirmed, decline the provisioning
request and say so; do not substitute the corresponding design skill as a
stand-in, since design skills explicitly exclude provisioning work.
Workflow skills (this plugin)
Seven workflow skills ship alongside the architecture skills in this same
lfx-skills plugin. Forward to them by name when relevant.
| Topic |
Skill |
| Onboarding and first-time setup |
/lfx-skills:lfx-setup |
| DCO and GPG signing |
/lfx-skills:lfx-git-setup |
| Cross-repo personal PR dashboard |
/lfx-skills:lfx-pr-catchup |
| GitHub PR review threads |
/lfx-skills:lfx-pr-resolve |
| Local multi-branch journey worktrees |
/lfx-skills:lfx-test-journey |
| Snowflake access requests |
/lfx-skills:lfx-snowflake-access |
| CDP Snowflake connector scaffolding |
/lfx-skills:lfx-cdp-snowflake-connectors |
Cross-repo path convention
Cross-repo references use repo-qualified paths, not relative filesystem
paths:
lfx-v2-indexer-service/docs/indexer-contract.md
That's the file inside lfx-v2-indexer-service, regardless of disk layout.
Resolve by reading at $LFX_DEV_ROOT/<repo>/<path> or Glob/find if
unsure. Never assume ../../<repo>/.
Hard rules
- Don't teach implementation recipes (Angular, Goa, Helm, ArgoCD,
query-service, FGA, etc.) using this skill. Point to the owning repo or
a sibling skill instead.
- Don't provide repo-specific setup, preflight, test, build, or deploy
commands without reading that repo's current instructions this turn.
- Don't assert live deployment state, service health, or production behavior
from this skill alone.
lfx-self-serve is the canonical Self Serve repo; legacy deployment
artifacts may say lfx-v2-ui, which is deployment naming only.
- Never generate real user PII (real emails, names, usernames, phone
numbers, LFIDs, GitHub/Discord handles, addresses, etc.) in test data,
fixtures, examples, logs, commits, PRs, or tickets. Never persist PII
outside a field the resource contract requires. When in doubt, stop and
ask the user. Exceptions to the commit/PR/ticket/comment
prohibition (hard rule 4 in
references/data-privacy.md) are limited
to two, each scoped tightly: every contributor's own DCO
Signed-off-by: trailer required by DCO (see lfx-git-setup) —
the commit author's signoff is always required, and each coauthor
who participated as a contributor MUST add their own
Signed-off-by: line alongside their Co-authored-by: trailer; and
author attribution — the commit's own git-author identity
(name + email), plus Co-authored-by: trailers only for individuals
who actually co-authored the change and consented to real-identity
attribution (Co-authored-by: is not a DCO trailer and is not
produced by --signoff). Neither exception permits a non-contributor's
PII (an affected end user, support contact, member org's staff, etc.)
in commit messages, PR bodies, tickets, or code comments. A separate
narrow exception applies to hard rule 2 (the no-PII-in-logs default): a
dedicated audit-log code path may emit raw PII only when every
condition in the canonical "Logging exception (narrow)" section of
references/data-privacy.md is satisfied — do not memorize a fixed
gate count here; consult the canonical section, since gates may be
added or refined over time. Authentication material is unconditionally
excluded from that exception. Full rules and safe alternatives:
references/data-privacy.md.
1---2name: lfx3description: LFX cross-repo topology and ownership router. Use when the task spans more than one LFX repo, asks "which repo owns X", "where does Y live", "what repos does this touch", "what consumes Z", or needs a peer-repo file path from inside a single repo. Loads per-repo configs when invoked from the LFX workspace root with a full task prompt; gives targeted cross-repo guidance when invoked from inside a single repo. Also answers LFX glossary and topology questions, and performs read-only discovery when the user asks whether a contract, API, event, field, workflow, or repo capability exists. Do not fire for single-repo implementation tasks where the active repo's own CLAUDE.md already governs (those belong to the repo's local skills). Do not fire for V2 platform composition, service classes, or cross-service handoffs (use `/lfx-skills:lfx-platform-architecture`), ITX wrapper plumbing (`/lfx-skills:lfx-itx-integration`), or Intercom app/Fin workflows (`/lfx-skills:lfx-intercom`).4---56<!-- Copyright The Linux Foundation and each contributor to LFX. -->7<!-- SPDX-License-Identifier: MIT -->89# LFX1011Find which LFX repos are needed for a task, load their configs, give12cross-repo guidance, or answer LFX questions.1314Four scenarios:15161. **Load configs** for multi-repo work (workspace-root invocation with a17 full task prompt or JIRA ticket).182. **Give guidance** when an agent inside a single repo needs cross-repo19 knowledge.203. **Answer questions** about LFX when no edits are coming.214. **Research before implementation** when the user asks what exists, what a22 task would touch, or whether an upstream contract supports a change.2324## Finding the LFX workspace root2526The workspace root (parent directory containing all LFX repo checkouts)27varies per user (`~/lfx/`, `~/lf/`, etc.). Find it before referencing28peer-repo paths. Ask the user if unsure (and offer `/lfx-skills:lfx-setup` to persist).29Use `$LFX_DEV_ROOT` throughout this skill's paths.3031If a required repo is not present at `$LFX_DEV_ROOT/<repo>`, read its32`GitHub:` URL from `references/repo-map.md` and clone it into the workspace33root:3435```bash36git clone <github-url> "$LFX_DEV_ROOT/<repo>"37```3839If the clone fails because of auth, network, or missing access, report that40repo as blocked. Do not replace the missing repo with central implementation41guesses.4243## How LFX fits together (high-level)4445LFX is the Linux Foundation's project-management platform. Three main layers:4647- **Self Serve / LFX One** (`lfx-self-serve`): user-facing product (Angular 2048 SSR + Express BFF + `@lfx-one/shared`). Consumes V2 APIs.49- **V2 platform** (~14 Go services): resource services own domain (project,50 committee, meeting, vote, survey, mailing-list, member); platform services51 compose (fga-sync, indexer, query, access-check, auth). Built on Goa + NATS52 - KV + OpenFGA. Writes publish contracts to fga-sync (access tuples) and53 indexer (search documents).54- **Deployment**: GitOps via ArgoCD. Service-local Helm charts per repo;55 umbrella chart + OpenFGA model in `lfx-v2-helm`; values, image tags, and56 ApplicationSets in `lfx-v2-argocd`. Auth0 emits JWTs, Heimdall enforces57 ruleset checks per route, fga-sync answers access decisions.5859Depth lives in the sibling skills below.6061## Workflow6263Three steps apply to every scenario:64651. **Classify** the task or question. Read `references/glossary.md` if any66 LFX term is unclear.672. **Identify the primary repo** via `references/repo-map.md`. The primary68 is where most edits happen and whose local instructions govern.693. **Identify peer repos** (if any) via `repo-map.md` plus (when ambiguous)70 `routing-playbook.md`. Add peers only for contracts, generated APIs,71 FGA/indexer data, deployment values, or product consumption that matter.724. **Resolve missing checkouts** by cloning the `GitHub:` URL listed in73 `repo-map.md` when a primary or required peer repo is absent locally.745. **Read owned truth from the owner repo**. Use `CLAUDE.md` for local work75 mode and the top-level `docs/` files it names for contracts and other76 repo-owned truth that other agents may consume.7778Then, depending on context:7980### Workspace-root invocation (full task prompt, JIRA ticket, etc.)8182The primary mode for multi-repo work. Load configs for the primary repo and83each peer.8485For each repo:8687- If `$LFX_DEV_ROOT/<repo>` is missing, clone the repo from the `GitHub:` URL88 in `references/repo-map.md`, then continue with local reads.89- Load `$LFX_DEV_ROOT/<repo>/CLAUDE.md`90- Load `$LFX_DEV_ROOT/<repo>/.claude/rules/` for path-scoped conventions91- Load `$LFX_DEV_ROOT/<repo>/.claude/skills/` for available workflows92- Read the top-level `docs/` contract files named by that repo's `CLAUDE.md`93 when cross-repo contracts, payloads, subjects, chart handoffs,94 integrations, or deployment surfaces matter.95- Browse `$LFX_DEV_ROOT/<repo>/docs/agent-guidance/` only when96 `references/repo-map.md` explicitly lists that path as a transitional owner97 location for the repo. For Self Serve, use `docs/architecture/` when98 `CLAUDE.md` or local skills point there.99100Work continues in the same session with the loaded context.101102### Single-repo invocation (cross-repo knowledge request)103104Give targeted guidance: name the specific peer-repo files the asking agent105should read (at `$LFX_DEV_ROOT/<peer-repo>/<path>`) and any constraints to106apply. Skip the full config load; the asking agent's session is what matters107and may not need everything. If the work is genuinely multi-repo, recommend108relaunching from `$LFX_DEV_ROOT`.109110### Cross-repo contract lookup111112Use this protocol when an agent in one repo needs a contract, payload, subject,113chart surface, deployment handoff, or integration detail owned by another repo.114Do not infer cross-repo contracts from local examples.1151161. Resolve the owner repo using `references/repo-map.md`.1172. If `$LFX_DEV_ROOT/<owner-repo>` is missing, clone the `GitHub:` URL from118 `repo-map.md` into the workspace root.1193. Read `references/contract-ownership.md` for the exact owner files for the120 contract, payload, subject, chart surface, deployment handoff, or integration121 detail being checked.1224. Read `$LFX_DEV_ROOT/<owner-repo>/CLAUDE.md` or `AGENTS.md` for that repo's123 local context order.1245. Read the top-level `docs/` files named by that repo's `CLAUDE.md` for the125 relevant owned contract.1266. Prefer stable top-level contract docs such as `docs/fga-contract.md`,127 `docs/indexer-contract.md`, `docs/fga-sync-contract.md`,128 `docs/query-service-contract.md`, or `docs/service-chart-patterns.md`129 when present.1307. Report the exact owner file read. If the path is absent, report a131 repo-readiness gap instead of substituting central guidance.132133### Pure question (no edits coming)134135Use references plus forward to sibling skills for depth. Skip the full136config load.137138### Research before implementation139140Use this mode for read-only discovery before an implementation starts. It141preserves the useful research workflow without adding another central skill.1421431. Route the task to the primary repo and required peers using the repo map.1442. Ensure the required repos are available locally; clone missing repos from145 their `GitHub:` URLs if needed.1463. Read the owning repo's local truth: `CLAUDE.md` or `AGENTS.md`, relevant147 top-level `docs/` contract files, `.claude/skills/`, `.claude/rules/`,148 `docs/architecture/`, generated contracts, chart templates, or event docs.149 Use `docs/agent-guidance/` only where `repo-map.md` explicitly lists it as a150 transitional owner location.1514. Validate whether the needed API, event, field, relation, index document,152 query shape, chart value, or deployment reference exists.1535. Find the closest existing example in the owning repo first. Use peer repos154 only when the owner points to them as canonical examples.1556. Return concise findings:156157```markdown158## Research Findings159160**Primary repo:** <repo> - <why it owns the work>161**Peers:** <repo list or none> - <why each matters>162**Contract status:** <exists / partial / missing>. <path, method, subject, field, relation, value>163**Local truth read:** <CLAUDE/rules/skills/docs paths>164**Closest example:** <path> - <why it matches>165**Likely files:** <paths or "implementation belongs in repo-local workflow">166**Blockers:** <none or concrete missing contract/access/repo issue>167**Next step:** <repo-local skill or central skill to use next>168```169170## How to use the references171172- **`references/glossary.md`**: read FIRST if an LFX term is unclear (Goa,173 Heimdall, FGA, OpenFGA, OpenSearch, etc.). Skip for routing decisions.174- **`references/repo-map.md`**: the primary tool for identifying primary175 and peer repos. Match task nouns to "route when the task mentions" phrases.176- **`references/contract-ownership.md`**: read after `repo-map.md` when an177 agent needs the exact owner and file path for a cross-repo contract,178 payload, subject, chart surface, deployment handoff, integration detail, or179 other repo-owned truth.180- **`references/routing-playbook.md`**: read only when `repo-map.md` doesn't181 give a clear answer or when the task spans multiple repos. Contains182 concrete primary/peer examples.183- **`references/deployment-routing.md`**: read INSTEAD of `repo-map.md` for184 deployment-related tasks (charts, ApplicationSets, image tags, environment185 values). It's the deployment-specific decision tree.186- **`references/topology.md`**: thin routing stub. For platform-shape depth,187 forward to `/lfx-skills:lfx-platform-architecture` instead of expanding it.188- **`references/service-types.md`**: thin routing stub. For native, wrapper,189 proxy, or V2 Go service-class depth, forward to190 `/lfx-skills:lfx-platform-architecture`.191- **`references/data-privacy.md`**: canonical hard rules for handling PII in192 test data, logs, persisted stores, tickets, PRs, and code comments. Read193 before generating fixtures/examples, before adding a log line that includes194 a user field, or before writing a user identifier into a KV, index doc,195 FGA tuple, or Jira ticket.196197Never load all references by default. Start with the smallest one.198199## Sibling central skills200201Each auto-fires on its own triggers; can also be invoked explicitly. These202ship in this same `lfx-skills` plugin.203204| Topic | Skill |205|--------------------------------------------------------------------------------------------|-------------------------------------------------------|206| Platform composition, V2 service classes, write/read/access-check flows, cross-repo owners | `/lfx-skills:lfx-platform-architecture` |207| Go coding conventions after routing to a service repo | That repo's path-scoped `<short-repo-name>-dev` skill |208| ITX wrapper plumbing (OAuth2 M2M, ID mapping, v1 KV sync) | `/lfx-skills:lfx-itx-integration` |209| Intercom app workflow and Fin AI optimization | `/lfx-skills:lfx-intercom` |210| Object storage capability in a service (uploads, S3, CDN, local dev) | `/lfx-skills:lfx-object-store-design` |211| Object storage backend provisioning (buckets, CloudFront, IRSA) | `/lfx-skills:lfx-object-store-ops` |212213### `-ops` skill convention214215Skills whose names end in `-ops` are written for **members of the216linuxfoundation GitHub org** (Ops/infrastructure audience). They are217provided for that audience's use and are not gated by the skill itself.218Before routing a task to an `-ops` skill, check whether the current GitHub219user is an org member (for example, `gh api220orgs/linuxfoundation/members/$(gh api user -q .login)` — a `204` means221member). If membership cannot be confirmed, decline the provisioning222request and say so; do not substitute the corresponding design skill as a223stand-in, since design skills explicitly exclude provisioning work.224225## Workflow skills (this plugin)226227Seven workflow skills ship alongside the architecture skills in this same228`lfx-skills` plugin. Forward to them by name when relevant.229230| Topic | Skill |231|--------------------------------------|--------------------------------------------|232| Onboarding and first-time setup | `/lfx-skills:lfx-setup` |233| DCO and GPG signing | `/lfx-skills:lfx-git-setup` |234| Cross-repo personal PR dashboard | `/lfx-skills:lfx-pr-catchup` |235| GitHub PR review threads | `/lfx-skills:lfx-pr-resolve` |236| Local multi-branch journey worktrees | `/lfx-skills:lfx-test-journey` |237| Snowflake access requests | `/lfx-skills:lfx-snowflake-access` |238| CDP Snowflake connector scaffolding | `/lfx-skills:lfx-cdp-snowflake-connectors` |239240## Cross-repo path convention241242Cross-repo references use **repo-qualified paths**, not relative filesystem243paths:244245```246lfx-v2-indexer-service/docs/indexer-contract.md247```248249That's the file inside `lfx-v2-indexer-service`, regardless of disk layout.250Resolve by reading at `$LFX_DEV_ROOT/<repo>/<path>` or `Glob`/`find` if251unsure. Never assume `../../<repo>/`.252253## Hard rules254255- Don't teach implementation recipes (Angular, Goa, Helm, ArgoCD,256 query-service, FGA, etc.) using this skill. Point to the owning repo or257 a sibling skill instead.258- Don't provide repo-specific setup, preflight, test, build, or deploy259 commands without reading that repo's current instructions this turn.260- Don't assert live deployment state, service health, or production behavior261 from this skill alone.262- `lfx-self-serve` is the canonical Self Serve repo; legacy deployment263 artifacts may say `lfx-v2-ui`, which is deployment naming only.264- **Never generate real user PII (real emails, names, usernames, phone265 numbers, LFIDs, GitHub/Discord handles, addresses, etc.) in test data,266 fixtures, examples, logs, commits, PRs, or tickets. Never persist PII267 outside a field the resource contract requires. When in doubt, stop and268 ask the user.** *Exceptions to the commit/PR/ticket/comment269 prohibition (hard rule 4 in `references/data-privacy.md`) are limited270 to two, each scoped tightly:* **every contributor's own DCO271 `Signed-off-by:` trailer** required by DCO (see `lfx-git-setup`) —272 the commit author's signoff is always required, and each coauthor273 who participated as a contributor MUST add their own274 `Signed-off-by:` line alongside their `Co-authored-by:` trailer; and275 author attribution — the commit's own git-author identity276 (name + email), plus `Co-authored-by:` trailers only for individuals277 who actually co-authored the change and consented to real-identity278 attribution (`Co-authored-by:` is not a DCO trailer and is not279 produced by `--signoff`). Neither exception permits a non-contributor's280 PII (an affected end user, support contact, member org's staff, etc.)281 in commit messages, PR bodies, tickets, or code comments. *A separate282 narrow exception applies to hard rule 2 (the no-PII-in-logs default): a283 dedicated audit-log code path may emit raw PII only when **every**284 condition in the canonical "Logging exception (narrow)" section of285 `references/data-privacy.md` is satisfied — do not memorize a fixed286 gate count here; consult the canonical section, since gates may be287 added or refined over time. Authentication material is unconditionally288 excluded from that exception.* Full rules and safe alternatives:289 [`references/data-privacy.md`](references/data-privacy.md).