{"id":50697266,"url":"https://github.com/linuxfoundation/lfx-skills","last_synced_at":"2026-06-09T07:30:39.290Z","repository":{"id":344914148,"uuid":"1183403038","full_name":"linuxfoundation/lfx-skills","owner":"linuxfoundation","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-01T10:58:22.000Z","size":795,"stargazers_count":7,"open_issues_count":24,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-01T12:27:36.178Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linuxfoundation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-16T15:16:02.000Z","updated_at":"2026-05-27T13:54:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/linuxfoundation/lfx-skills","commit_stats":null,"previous_names":["linuxfoundation/skill","linuxfoundation/lfx-skills"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/linuxfoundation/lfx-skills","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxfoundation%2Flfx-skills","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxfoundation%2Flfx-skills/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxfoundation%2Flfx-skills/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxfoundation%2Flfx-skills/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linuxfoundation","download_url":"https://codeload.github.com/linuxfoundation/lfx-skills/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxfoundation%2Flfx-skills/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34096950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-09T07:30:37.650Z","updated_at":"2026-06-09T07:30:39.282Z","avatar_url":"https://github.com/linuxfoundation.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LFX Skills\n\nA collection of AI coding skills that encode the full development workflow for the LFX Self-Service platform. These skills turn your AI coding assistant into a context-aware development partner that understands LFX conventions, architecture, and code patterns — eliminating the need to repeatedly explain project structure, naming rules, or coding standards.\n\n## Quick Install\n\n```bash\ngit clone https://github.com/linuxfoundation/skills.git\ncd skills\n./install.sh\n```\n\nThen restart your AI coding assistant, open any LFX repo, and type `/lfx` to get started.\n\n## How It Works\n\nType `/lfx` and describe what you want in plain language:\n\n- **\"Add a bio field to committee members\"** — builds the full-stack feature automatically\n- **\"How does the meeting data flow work?\"** — explains the architecture in plain language\n- **\"Check if my changes are ready for a PR\"** — validates everything and offers to create the PR\n\nThe `/lfx` skill auto-detects your repo, branch, and context, then routes you to the right workflow. No need to know which skill to pick — just describe what you want.\n\nNew to LFX development? Type `/lfx` and say **\"show me an example\"** for a walkthrough.\n\n## Prerequisites\n\n- An AI coding assistant that supports skill-based workflows (e.g., Claude Code, Gemini CLI). See [docs/platform-install.md](docs/platform-install.md) for setup instructions.\n- Access to LFX repositories (for the skills to operate on)\n\n## Manual Installation\n\n\u003e **Note:** These manual instructions are for Claude Code. For other platforms, see [docs/platform-install.md](docs/platform-install.md).\n\nIf you prefer to install manually instead of using `./install.sh`:\n\n### Step 1: Clone this repo\n\n```bash\ngit clone https://github.com/linuxfoundation/skills.git\n```\n\n### Step 2: Install the skills\n\nClaude Code auto-discovers skills from `~/.claude/skills/`. Symlink each skill:\n\n```bash\n# From the cloned repo directory\nmkdir -p ~/.claude/skills\nfor skill in lfx-*/ lfx/; do\n  ln -sf \"$(pwd)/$skill\" ~/.claude/skills/\"$(basename \"$skill\")\"\ndone\n```\n\nThis makes all `/lfx*` skills available globally.\n\n### Step 3: Verify\n\nRestart your AI coding assistant (or open a new session) in any LFX repo and type `/lfx` — you should see all skills in the autocomplete list:\n\n```\n/lfx                    ← start here (plain-language entry point)\n/lfx-coordinator\n/lfx-research\n/lfx-backend-builder\n/lfx-ui-builder\n/lfx-product-architect\n/lfx-preflight\n/lfx-pr-catchup\n/lfx-setup\n/lfx-test-journey\n/lfx-intercom\n```\n\n### Alternative: Per-repo installation\n\nIf you prefer skills scoped to a specific repo instead of global:\n\n```bash\n# From inside a target repo (e.g., lfx-v2-ui)\nmkdir -p .claude/skills\nfor skill in /path/to/skills/lfx-*/ /path/to/skills/lfx/; do\n  ln -sf \"$skill\" .claude/skills/\"$(basename \"$skill\")\"\ndone\n\n# Keep symlinks out of version control\necho '.claude/skills/' \u003e\u003e .gitignore\n```\n\n### Uninstall\n\n\u003e **Note:** These instructions are for Claude Code. For other platforms, remove the skill references from your tool's configuration.\n\n```bash\nrm -f ~/.claude/skills/lfx-*\nrm -f ~/.claude/skills/lfx\n```\n\n## Architecture\n\nThe skills form a layered system where each skill has a clear responsibility and mode of operation:\n\n```\n┌─────────────────────────────────────────────────────────┐\n│                    /lfx (entry point)                     │\n│     Plain-language router — describe what you want       │\n├─────────────────────────────────────────────────────────┤\n│              /lfx-coordinator (orchestrator)             │\n│       Researches, plans, delegates, validates            │\n├──────────┬──────────┬───────────────┬───────────────────┤\n│ /lfx-    │ /lfx-    │ /lfx-product- │ /lfx-research    │\n│ backend- │ ui-      │ architect      │ (read-only       │\n│ builder  │ builder  │ (read-only     │  exploration)    │\n│ (codegen)│ (codegen)│  guidance)     │                  │\n├──────────┴──────────┴───────────────┴───────────────────┤\n│  /lfx-preflight (validation)  │  /lfx-setup (env)      │\n├───────────────────────────────┴─────────────────────────┤\n│  /lfx-pr-catchup (standalone — morning PR dashboard)    │\n└─────────────────────────────────────────────────────────┘\n```\n\n## Skill Overview\n\n| Skill | Purpose | Mode | Tools |\n|-------|---------|------|-------|\n| **`/lfx`** | **Start here.** Describe what you want in plain language — auto-detects context and routes to the right skill | Router | Bash, Read, Glob, Grep, AskUserQuestion, **Skill** |\n| `/lfx-coordinator` | Orchestrates full feature development — researches, plans, delegates to builders in parallel, validates | Read + delegate | Bash, Read, Glob, Grep, AskUserQuestion, **Skill** |\n| `/lfx-research` | Explores upstream APIs, discovers code patterns, reads architecture docs, validates contracts via MCP | Read-only | Bash, Read, Glob, Grep, AskUserQuestion, **WebFetch** |\n| `/lfx-backend-builder` | Generates Express.js proxy endpoints, Go microservice code, shared types. Encodes three-file pattern, logging, Goa DSL, NATS messaging | Code gen | Bash, Read, **Write, Edit**, Glob, Grep, AskUserQuestion |\n| `/lfx-ui-builder` | Generates Angular 20 components, services, drawers, pagination UI, styling. Encodes signal patterns, PrimeNG wrappers | Code gen | Bash, Read, **Write, Edit**, Glob, Grep, AskUserQuestion |\n| `/lfx-product-architect` | Answers \"where should this go?\", traces data flows, makes placement decisions, explains design patterns | Read-only | Bash, Read, Glob, Grep, AskUserQuestion |\n| `/lfx-preflight` | Pre-PR validation — Phase 1 auto-fixes (format, license, lint, build), Phase 2 code review (15 report-only checks for Angular). Pass `--skip-review` to skip Phase 2 | Validate + review | Bash, Read, **Write, Edit**, Glob, Grep, AskUserQuestion |\n| `/lfx-pr-catchup` | Morning PR dashboard — unresolved comments, status changes, stale PRs, approved-but-not-merged across all your open PRs | Read-only | Bash, Read, Glob, Grep, AskUserQuestion |\n| `/lfx-setup` | Environment setup — prerequisites, clone, install, env vars, dev server. Adapts to Angular or Go repos | Interactive guide | Bash, Read, Glob, Grep, AskUserQuestion |\n| `/lfx-test-journey` | Combine branches from multiple repos into worktrees for journey testing | Interactive | Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion |\n| `/lfx-intercom` | Add or fix Intercom integration against the LFX canonical pattern — audits JWT setup, shutdown, Auth0 claim, app IDs, CSP | Audit + fix | Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion |\n| `/lfx-cdp-snowflake-connectors` | Streamlines adding a new Snowflake connector to CDP — requires knowledge of the source specs | Interactive and guided | Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion |\n| `/lfx-v2-ticket-writer` | Create a single LFXV2 Jira ticket — guided prompts, requirement-focused descriptions, reproduction steps for bugs, no sprint or assignee by default | Interactive | AskUserQuestion, Atlassian MCP |\n\n\u003e **Note:** Tool names in the table above follow Claude Code conventions. See [docs/tool-mapping.md](docs/tool-mapping.md) for equivalents on other platforms.\n\n---\n\n## Skill Details\n\n### `/lfx-coordinator`\n\nThe top-level orchestrator for any feature development. It **never writes code directly** — instead, it researches the codebase, builds a delegation plan, and invokes `/lfx-backend-builder` and `/lfx-ui-builder` in parallel.\n\n**Workflow:**\n1. **Setup** — detects repo type (Angular or Go), checks/creates feature branch\n2. **Plan** — determines scope, build order (upstream Go → shared types → Express proxy → frontend)\n3. **Research** — inline exploration (5–10 tool calls) to find existing patterns, upstream APIs, file paths\n4. **Delegation Plan** — outputs a structured plan and **pauses for user approval**\n5. **Build** — invokes builder skills **in parallel** via the Skill tool\n6. **Validate** — runs format, lint, build across all modified repos\n7. **Summary** — structured completion report with files changed, validation results, and next steps\n\n**Key behaviors:**\n- Identifies the upstream Go service by reading Express proxy code API paths (e.g., `/committees/...` → `lfx-v2-committee-service`)\n- Includes upstream Go service changes when the data model needs modification\n- Handles validation failures by re-invoking only the skill that owns the broken file\n- Idempotent — safe to re-run after partial completion; detects and skips already-completed work\n\n---\n\n### `/lfx-research`\n\nA **read-only** exploration agent that gathers all context needed before code generation. Returns structured, compact findings (under 30 lines) that the coordinator consumes.\n\n**Research tasks:**\n- **Upstream API validation** — reads OpenAPI specs via `gh api` or local files to check if endpoints/fields exist\n- **Codebase exploration** — finds existing services, components, controllers, domain models\n- **Architecture doc reading** — checks placement rules, protected files, dependencies\n- **Example discovery** — finds the closest existing implementation to use as a pattern\n- **MCP-assisted exploration** — uses LFX MCP tools to validate live data shapes, Atlassian MCP for JIRA context\n\n**Upstream service mapping:**\n\n| Domain | Repo |\n|--------|------|\n| Committees | `lfx-v2-committee-service` |\n| Meetings | `lfx-v2-meeting-service` |\n| Voting | `lfx-v2-voting-service` |\n| Mailing Lists | `lfx-v2-mailing-list-service` |\n| Members | `lfx-v2-member-service` |\n| Projects | `lfx-v2-project-service` |\n| Surveys | `lfx-v2-survey-service` |\n| Queries | `lfx-v2-query-service` |\n\n---\n\n### `/lfx-backend-builder`\n\nGenerates **PR-ready backend code** for both the Express.js proxy layer (in `lfx-v2-ui`) and Go microservices (in `lfx-v2-*-service` repos). Always reads target files before generating code — never works from memory alone.\n\n**Express.js proxy (Angular repo):**\n- Follows the **three-file pattern**: service → controller → route\n- Services use `MicroserviceProxyService` for all upstream calls (never raw `fetch`/`axios`)\n- Controllers use `logger.startOperation()` / `logger.success()` / `logger.error()` lifecycle\n- Routes are created but `server.ts` registration is flagged for code owner (protected file)\n- Encodes logging conventions, error handling (`next(error)`, never `res.status(500)`), pagination (`page_size`), and auth defaults (user bearer token)\n\n**Go microservices:**\n- Goa v3 DSL for API design (`cmd/{service}/design/`) with `make apigen` for code generation\n- Domain models in `internal/domain/model/` with `Tags()` method for OpenSearch indexing\n- NATS messaging — publish index + access messages on every write operation\n- OpenFGA access control via generic fga-sync handlers\n- Helm chart updates for deployment, HTTPRoute, Heimdall authorization rules\n\n**Reference docs included:**\n\n| Reference | Content |\n|-----------|---------|\n| `getting-started.md` | Repo map, deployment overview, local dev setup |\n| `goa-patterns.md` | Goa DSL conventions, `make apigen`, ETag/If-Match optimistic locking |\n| `nats-messaging.md` | Subject naming, service-to-service communication, KV storage |\n| `indexer-patterns.md` | IndexerMessageEnvelope, IndexingConfig, OpenSearch document structure |\n| `fga-patterns.md` | OpenFGA tuples, permission inheritance, debugging access |\n| `service-types.md` | Native vs wrapper services, which template to follow |\n| `query-service.md` | Query service API, OpenSearch queries, FGA-based filtering |\n| `helm-chart.md` | Deployment, HTTPRoute, Heimdall rules, KV buckets, secrets |\n| `new-service.md` | End-to-end checklist for building a new resource service |\n| `backend-endpoint.md` | Three-file pattern, authentication, pagination, error handling |\n\n---\n\n### `/lfx-ui-builder`\n\nGenerates **PR-ready Angular 20 frontend code** — components, services, drawers, pagination, and styling. Only activates in Angular repos.\n\n**Components:**\n- Standalone with direct imports (no barrel exports)\n- Strict 11-section class structure: injections → inputs → forms → model signals → writable signals → computed/toSignal → constructor → public methods → protected methods → private init functions → private helpers\n- Signal-based reactivity: `signal()`, `input()`, `output()`, `computed()`, `model()`, `toSignal()`\n- Templates use `@if`/`@for` (never `*ngIf`/`*ngFor`), `flex + gap-*` layout (never `space-y-*`), `data-testid` attributes\n- PrimeNG components wrapped with `lfx-` prefix and `descendants: false` on `@ContentChild`\n\n**Services:**\n- `@Injectable({ providedIn: 'root' })` with `inject(HttpClient)`\n- GET requests: `catchError(() =\u003e of(default))` for graceful degradation\n- POST/PUT/DELETE: `take(1)`, let errors propagate\n- Interfaces from `@lfx-one/shared/interfaces`, relative API paths (`/api/...`)\n\n**Drawers:**\n- `model\u003cboolean\u003e(false)` for visibility\n- Lazy data loading via `toObservable(visible).pipe(skip(1), switchMap(...))`\n- `forkJoin` for parallel API calls, responsive width classes\n\n**Pagination:**\n- Infinite scroll with `page_token`, `scan()` accumulator, separate first-page and next-page streams\n\n**Reference docs included:**\n\n| Reference | Content |\n|-----------|---------|\n| `frontend-component.md` | Component placement, class structure, signal types, template rules, drawer conventions |\n| `frontend-service.md` | Service patterns, state management, signals vs RxJS guidance |\n\n---\n\n### `/lfx-product-architect`\n\nA **read-only** advisory skill that answers architectural questions without generating code. Provides decision trees, data flow traces, and placement recommendations.\n\n**Decision trees:**\n- \"Where does my component go?\" — route vs module-specific vs shared vs PrimeNG wrapper\n- \"Do I need a new module?\" — distinct domain + own routes + enough isolation\n- \"Where does my type go?\" — shared package vs local definition\n- \"Backend: new service or extend existing?\" — organized by domain, not by HTTP method\n- \"New Go service or extend existing?\" — based on resource type ownership\n- \"User token or M2M token?\" — default to user bearer, M2M only for public/privileged calls\n\n**Data flow tracing:**\n- Frontend → Backend → Upstream: Angular component → HttpClient → Express proxy → MicroserviceProxyService → Go microservice\n- Write flow: HTTP → Heimdall auth → Goa handler → Storage → concurrent NATS publish (index + FGA)\n- Read flow: query-service → OpenSearch → batch FGA check → filtered results\n\n**Platform overview:** Maps the full system from Angular frontend through Express proxy, shared package, resource services, platform services (query, indexer, fga-sync, access-check), down to infrastructure (NATS JetStream, OpenSearch, OpenFGA, Traefik, Heimdall).\n\n---\n\n### `/lfx-preflight`\n\nRuns a two-phase **pre-PR validation**. Adapts all checks to the repo type.\n\n**Phase 1: Validation (auto-fix):**\n1. **Working tree status** — uncommitted changes, commits ahead of main, JIRA references, `--signoff`\n2. **License headers** — verifies and auto-fixes missing headers on `.ts`, `.html`, `.scss`, `.go` files\n3. **Formatting** — `yarn format` (Angular) or `gofmt -w .` (Go), reports which files changed\n4. **Linting** — `yarn lint` (Angular) or `go vet ./...` (Go), auto-fixes import order/unused imports\n5. **Build verification** — `yarn build` (Angular) or `go build ./...` (Go), fixes simple issues\n6. **Tests** — runs if test files exist for modified code (doesn't block on failures)\n7. **Protected files check** — flags changes to infrastructure files (`server.ts`, middleware, `angular.json`, `gen/`, `charts/`, etc.)\n8. **Commit verification** — conventions, signoff, JIRA ticket\n9. **Change summary** — categorized list of all new and modified files\n\n**Phase 2: Code Review (Angular only, report-only):**\n15 pattern checks for common reviewer blockers — raw HTML wrappers, dead code, component size, loading states, type safety, error handling, signal patterns, API alignment, PR description, accessibility, design tokens, N+1 patterns, template completeness, stale data, visitor gating. All report-only; none auto-fix.\n\n**Flags:** `--skip-review` skips Phase 2. \"report only\" / \"dry run\" makes Phase 1 report-only too.\n\n---\n\n### `/lfx-pr-catchup`\n\nA **read-only** morning dashboard that shows all your open PRs across repos, classified by urgency.\n\n**Workflow:**\n1. **Auth check** — verifies `gh auth status`\n2. **Config** — uses defaults immediately (org filter and stale threshold can be passed inline, e.g., `/lfx-pr-catchup linuxfoundation`)\n3. **Fetch** — `gh search prs --author=@me --state=open` (up to 50)\n4. **Enrich** — GraphQL calls for review threads, reviews, merge status\n5. **Classify** — HIGH (unresolved comments, changes requested), MEDIUM (approved not merged, stale), LOW (no reviewers)\n6. **Render** — grouped by repo, \"Needs Attention\" first with details, \"All Clear\" compact\n7. **Drill-down** — pick a PR number for full comment threads, CI status, and diff summary\n\n**Edge cases:** auth failure (stops with instructions), rate limiting (partial results with reset time), inaccessible repos (skipped with note), 50+ PRs (warns, suggests org filter), GraphQL failure (falls back to REST).\n\n---\n\n### `/lfx-test-journey` — Multi-Branch Journey Testing\n\nCombines feature branches from one or more repos into isolated git worktrees for end-to-end journey testing. Use this when you have a user journey spread across multiple PRs/branches and need to test everything together before merging.\n\n**Quick start:**\n```\n/lfx-test-journey\n```\nThis starts the interactive create flow:\n1. Select which repos are involved (auto-discovers repos in `~/lf/`)\n2. Pick branches to include per repo (shows your unmerged branches)\n3. Name the journey\n4. The skill creates worktrees, merges branches, and tells you exactly where to `cd` and how to run the app\n\n**After creating a journey:**\n```bash\n# Go to the worktree and run the app as usual\ncd ~/.lfx-journeys/\u003cjourney-name\u003e/\u003crepo-name\u003e/\nyarn start    # (Angular) or go run cmd/*/main.go (Go)\n```\n\n**Managing journeys:**\n```\n/lfx-test-journey list                          # See all active journeys\n/lfx-test-journey status                        # Check if branches have new commits\n/lfx-test-journey refresh \u003cjourney-name\u003e        # Re-merge with latest branch HEADs\n/lfx-test-journey edit \u003cjourney-name\u003e           # Add/remove branches\n/lfx-test-journey teardown \u003cjourney-name\u003e       # Clean up when done testing\n```\n\n**How it works:** Creates git worktrees (isolated working copies) at `~/.lfx-journeys/\u003cjourney-name\u003e/`, merges your selected branches on top of main, and tracks everything in a manifest file. Your original branches are never modified. Each refresh does a clean re-merge from scratch.\n\n---\n\n### `/lfx-setup`\n\nAn **interactive setup guide** that walks through environment configuration step by step, verifying each step before proceeding.\n\n**Angular repo setup (lfx-v2-ui):**\n1. Prerequisites: Node.js v22+, Yarn v4.9.2+, Git\n2. Clone the repository\n3. Environment variables from `.env.example` + 1Password credentials\n4. `yarn install` with troubleshooting for common failures\n5. `yarn start` → `http://localhost:4200`\n6. Verification with HTTP status check\n\n**Go microservice setup:**\n1. Prerequisites: Go 1.22+, Git, Make (optional: Helm, Docker)\n2. Clone the repository\n3. Environment variables for local or shared dev stack\n4. `go mod download \u0026\u0026 go build ./...`\n5. `make apigen` for Goa API code generation\n6. `go run cmd/*-api/main.go` → verify `/livez` endpoint\n7. Optional: full local platform stack via Helm\n\n**Includes troubleshooting** for common issues: corepack permissions, EACCES errors, port conflicts, auth loops, NATS connection failures, Goa installation.\n\n---\n\n## Typical Workflows\n\n### Start here — just describe what you want\n```\n/lfx → \"Add a bio field to committee members\" → auto-routes to coordinator → builds → validates → PR\n/lfx → \"How does meeting data work?\" → auto-routes to product architect → explains architecture\n/lfx → \"Check if my changes are ready\" → auto-routes to preflight → validates → offers PR creation\n```\n\n### Build a new feature end-to-end\n```\n/lfx-coordinator → researches → plans → delegates to /lfx-backend-builder + /lfx-ui-builder → validates → /lfx-preflight → PR\n```\n\n### Understand the architecture before coding\n```\n/lfx-product-architect → \"where should this component go?\" / \"how does the data flow?\"\n```\n\n### Explore what exists before planning\n```\n/lfx-research → upstream API contract + codebase patterns + example files\n```\n\n### Quick backend-only or frontend-only change\n```\n/lfx-backend-builder → generates Express proxy + shared types\n/lfx-ui-builder → generates Angular component + service\n```\n\n### Morning PR catch-up\n```\n/lfx-pr-catchup → fetches open PRs → enriches via GraphQL → renders attention dashboard → drill-down\n```\n\n### Test a multi-branch user journey\n```\n/lfx-test-journey → pick repos → pick branches → creates worktrees → cd into worktree → yarn start\n/lfx-test-journey status → shows which branches have new commits → /lfx-test-journey refresh \u003cname\u003e\n/lfx-test-journey teardown \u003cname\u003e → cleans up when done\n```\n\n### Validate before submitting a PR\n```\n/lfx-preflight → Phase 1 (license, format, lint, build, protected files) → Phase 2 (15 code review checks, Angular only) → PR\n/lfx-preflight --skip-review → Phase 1 only (useful during dev)\n```\n\n### Set up a new developer environment\n```\n/lfx-setup → prerequisites → clone → env vars → install → dev server\n```\n\n## Project Structure\n\n```\n├── lfx/\n│   ├── SKILL.md                    # Entry point — plain-language router\n│   └── references/\n│       ├── glossary.md             # LFX terms explained in plain language\n│       └── quickstart.md           # Example workflow transcripts\n├── lfx-coordinator/\n│   ├── SKILL.md                    # Orchestrator — plans, delegates, validates\n│   └── references/\n│       └── shared-types.md         # Shared package conventions\n├── lfx-research/\n│   └── SKILL.md                    # Read-only exploration and API validation\n├── lfx-backend-builder/\n│   ├── SKILL.md                    # Express.js proxy + Go microservice codegen\n│   └── references/\n│       ├── backend-endpoint.md     # Three-file pattern for Express endpoints\n│       ├── fga-patterns.md         # OpenFGA access control patterns\n│       ├── getting-started.md      # Repo map and deployment overview\n│       ├── goa-patterns.md         # Goa v3 DSL conventions\n│       ├── helm-chart.md           # Service Helm chart structure\n│       ├── indexer-patterns.md     # OpenSearch indexing patterns\n│       ├── nats-messaging.md       # NATS subject naming and messaging\n│       ├── new-service.md          # New resource service checklist\n│       ├── query-service.md        # Query service API reference\n│       └── service-types.md        # Native vs wrapper service types\n├── lfx-ui-builder/\n│   ├── SKILL.md                    # Angular 20 frontend codegen\n│   └── references/\n│       ├── frontend-component.md   # Component patterns and conventions\n│       └── frontend-service.md     # Service patterns and state management\n├── lfx-product-architect/\n│   └── SKILL.md                    # Architecture guidance and decision trees\n├── lfx-preflight/\n│   └── SKILL.md                    # Pre-PR validation and auto-fix\n├── lfx-pr-catchup/\n│   └── SKILL.md                    # Morning PR catch-up dashboard\n├── lfx-setup/\n│   └── SKILL.md                    # Environment setup guide\n├── lfx-test-journey/\n│   └── SKILL.md                    # Multi-branch journey testing\n├── lfx-intercom/\n│   └── SKILL.md                    # Intercom integration — add or fix to LFX standard\n├── lfx-cdp-snowflake-connectors/\n│   └── SKILL.md                    # Snowflake connector scaffolding for CDP\n└── lfx-v2-ticket-writer/\n    └── SKILL.md                    # Guided LFXV2 Jira ticket creation\n```\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinuxfoundation%2Flfx-skills","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinuxfoundation%2Flfx-skills","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinuxfoundation%2Flfx-skills/lists"}