diff --git a/.github/workflows/license-header-check.yml b/.github/workflows/license-header-check.yml index bbfe404..fc7798e 100644 --- a/.github/workflows/license-header-check.yml +++ b/.github/workflows/license-header-check.yml @@ -12,4 +12,7 @@ permissions: jobs: license-header-check: name: License Header Check - uses: linuxfoundation/lfx-public-workflows/.github/workflows/license-header-check.yml@874b1c3f4e5d6789abcdeffedcba1234567890ab + uses: linuxfoundation/lfx-public-workflows/.github/workflows/license-header-check.yml@main + with: + copyright_line: "Copyright The Linux Foundation and each contributor to LFX." + include_files: "*.md" diff --git a/README.md b/README.md index 6e021b2..0368b0c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ + + + # LFX Skills A 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. @@ -5,8 +8,8 @@ A collection of AI coding skills that encode the full development workflow for t ## Quick Install ```bash -git clone https://github.com/linuxfoundation/skills.git -cd skills +git clone https://github.com/linuxfoundation/lfx-skills.git +cd lfx-skills ./install.sh ``` @@ -38,7 +41,7 @@ If you prefer to install manually instead of using `./install.sh`: ### Step 1: Clone this repo ```bash -git clone https://github.com/linuxfoundation/skills.git +git clone https://github.com/linuxfoundation/lfx-skills.git ``` ### Step 2: Install the skills @@ -60,7 +63,7 @@ This makes all `/lfx*` skills available globally. Restart 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: ``` -/lfx ← start here (plain-language entry point) +/lfx ← start here (plain-language entry point) /lfx-coordinator /lfx-research /lfx-backend-builder @@ -68,9 +71,13 @@ Restart your AI coding assistant (or open a new session) in any LFX repo and typ /lfx-product-architect /lfx-preflight /lfx-pr-catchup +/lfx-pr-resolve /lfx-setup /lfx-test-journey +/lfx-git-setup /lfx-intercom +/lfx-snowflake-access +/lfx-cdp-snowflake-connectors ``` ### Alternative: Per-repo installation @@ -132,10 +139,13 @@ The skills form a layered system where each skill has a clear responsibility and | `/lfx-product-architect` | Answers "where should this go?", traces data flows, makes placement decisions, explains design patterns | Read-only | Bash, Read, Glob, Grep, AskUserQuestion | | `/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 | | `/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 | +| `/lfx-pr-resolve` | Address PR review feedback end-to-end — fetches threads, makes changes, commits, responds per-thread, resolves, posts summary | Audit + fix | Bash, Read, **Write, Edit**, Glob, Grep, AskUserQuestion, **Skill** | | `/lfx-setup` | Environment setup — prerequisites, clone, install, env vars, dev server. Adapts to Angular or Go repos | Interactive guide | Bash, Read, Glob, Grep, AskUserQuestion | | `/lfx-test-journey` | Combine branches from multiple repos into worktrees for journey testing | Interactive | Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion | +| `/lfx-git-setup` | Interactive setup for DCO sign-off and GPG-signed commits. Use when commits aren't showing as Verified or onboarding to LFX | Interactive guide | Bash, Read, Glob, Grep, AskUserQuestion, **WebFetch** | | `/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 | -| `/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 | +| `/lfx-snowflake-access` | Guide users requesting Snowflake access — generates Terraform HCL for `users.tf` or `service_accounts.tf` and walks through the PR | Interactive guide | Bash, Read, Glob, Grep, AskUserQuestion, **WebFetch** | +| `/lfx-cdp-snowflake-connectors` | Streamlines adding a new Snowflake connector to CDP — requires knowledge of the source specs. Requires LFX BI Layer MCP server | Interactive and guided | Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion, **MCP (LFX BI Layer)** | > **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. @@ -442,6 +452,8 @@ An **interactive setup guide** that walks through environment configuration step ├── lfx-coordinator/ │ ├── SKILL.md # Orchestrator — plans, delegates, validates │ └── references/ +│ ├── fga-protected-types.md # FGA-protected resource types (read-restricted) +│ ├── indexed-data-types.md # Queryable resource types and indexing │ └── shared-types.md # Shared package conventions ├── lfx-research/ │ └── SKILL.md # Read-only exploration and API validation @@ -469,12 +481,24 @@ An **interactive setup guide** that walks through environment configuration step │ └── SKILL.md # Pre-PR validation and auto-fix ├── lfx-pr-catchup/ │ └── SKILL.md # Morning PR catch-up dashboard +├── lfx-pr-resolve/ +│ ├── SKILL.md # Address PR review feedback end-to-end +│ └── evals/ +│ └── evals.json # Skill behavior assertions ├── lfx-setup/ │ └── SKILL.md # Environment setup guide ├── lfx-test-journey/ │ └── SKILL.md # Multi-branch journey testing +├── lfx-git-setup/ +│ ├── SKILL.md # DCO sign-off and GPG-signed commit setup +│ └── references/ +│ ├── linux.md # Linux-specific GPG/DCO instructions +│ ├── mac.md # macOS-specific GPG/DCO instructions +│ └── windows.md # Windows-specific GPG/DCO instructions ├── lfx-intercom/ │ └── SKILL.md # Intercom integration — add or fix to LFX standard +├── lfx-snowflake-access/ +│ └── SKILL.md # Request Snowflake access via Terraform PR └── lfx-cdp-snowflake-connectors/ └── SKILL.md # Snowflake connector scaffolding for CDP ``` diff --git a/docs/platform-install.md b/docs/platform-install.md index b68a1fd..efcfa54 100644 --- a/docs/platform-install.md +++ b/docs/platform-install.md @@ -12,8 +12,8 @@ Claude Code is the reference implementation. Skills are auto-discovered from `~/ **Automatic installation:** ```bash -git clone https://github.com/linuxfoundation/skills.git -cd skills +git clone https://github.com/linuxfoundation/lfx-skills.git +cd lfx-skills ./install.sh ``` diff --git a/lfx-backend-builder/SKILL.md b/lfx-backend-builder/SKILL.md index 8a72dcc..8a74e80 100644 --- a/lfx-backend-builder/SKILL.md +++ b/lfx-backend-builder/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-backend-builder description: > Generate compliant backend code for LFX repos — Express.js proxy endpoints @@ -7,8 +9,6 @@ description: > allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion --- - - # LFX Backend Code Generation diff --git a/lfx-cdp-snowflake-connectors/SKILL.md b/lfx-cdp-snowflake-connectors/SKILL.md index d5058b8..54eff7f 100644 --- a/lfx-cdp-snowflake-connectors/SKILL.md +++ b/lfx-cdp-snowflake-connectors/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-cdp-snowflake-connectors description: Use when adding a new snowflake-connector data source to crowd.dev — a new platform or a new source within an existing platform that needs buildSourceQuery, transformer, activity types, migration, and all associated type registrations scaffolded. allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion, mcp__claude_ai_LFX_BI_Layer__get_all_sources, mcp__claude_ai_LFX_BI_Layer__get_source_details, mcp__claude_ai_LFX_BI_Layer__list_metrics, mcp__claude_ai_LFX_BI_Layer__get_dimensions, mcp__claude_ai_LFX_BI_Layer__query_metrics @@ -6,6 +8,18 @@ allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion, mcp__claude # Scaffold Snowflake Connector +## Prerequisites + +This skill requires the **LFX BI Layer MCP server** to be configured in your AI tool. The skill calls these MCP tools to discover Snowflake source schemas, dimensions, and metrics: + +- `mcp__claude_ai_LFX_BI_Layer__get_all_sources` +- `mcp__claude_ai_LFX_BI_Layer__get_source_details` +- `mcp__claude_ai_LFX_BI_Layer__list_metrics` +- `mcp__claude_ai_LFX_BI_Layer__get_dimensions` +- `mcp__claude_ai_LFX_BI_Layer__query_metrics` + +If these tools are not available in your environment, the skill will fail in Phase 2 (Schema Collection) when querying source schemas. Set up the LFX BI Layer MCP server before invoking this skill — see your team's MCP onboarding docs. + ## Overview This skill scaffolds all code required to add a new snowflake-connector data source to crowd.dev. It covers up to 11 touch points, enforces zero-assumption practices, and requires explicit user validation for every piece of business logic before writing any file to disk. diff --git a/lfx-coordinator/SKILL.md b/lfx-coordinator/SKILL.md index 55f861b..e17c941 100644 --- a/lfx-coordinator/SKILL.md +++ b/lfx-coordinator/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-coordinator description: > Guided development workflow for building, fixing, updating, or refactoring @@ -8,14 +10,23 @@ description: > allowed-tools: Bash, Read, Glob, Grep, AskUserQuestion, Skill --- - - # LFX Development Coordinator You coordinate development across LFX repos. You NEVER write code — you delegate ALL code changes to `/lfx-backend-builder` and `/lfx-ui-builder`. You do not have Write or Edit tools. +## Defer to specialized skills when applicable + +Before starting your normal coordination workflow, check whether the request belongs to a specialized skill that handles its own end-to-end flow. If so, tell the user and stop: + +- **Intercom integration work** (add Intercom to an Angular app, fix JWT setup, audit CSP, fix shutdown, fix Auth0 claim) → defer to `/lfx-intercom`. That skill audits and fixes against the LFX canonical Intercom pattern. +- **CDP / crowd.dev Snowflake connectors** (add a new snowflake-connector data source, scaffold buildSourceQuery + transformer + activity types + migration) → defer to `/lfx-cdp-snowflake-connectors`. That skill enforces zero-assumption scaffolding with explicit user validation per business-logic decision. + +If the request matches one of these, respond with: "This is best handled by `/` — it owns the full workflow for this. Want me to hand off?" Do not attempt to coordinate it yourself. + +For everything else (full-stack feature work, bug fixes, refactors across the regular LFX repos), continue with the workflow below. + ## Input Validation Before starting, verify you have enough context. Auto-detect as much as possible — minimize questions to the user. diff --git a/lfx-git-setup/SKILL.md b/lfx-git-setup/SKILL.md index 4d57c70..d9c54ea 100644 --- a/lfx-git-setup/SKILL.md +++ b/lfx-git-setup/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-git-setup description: > Interactive setup guide for LFX contributors to configure Git for DCO signoff @@ -13,9 +15,6 @@ description: > allowed-tools: Bash, Read, Glob, Grep, AskUserQuestion, WebFetch --- - - - # LFX git Setup: DCO Signoff & GPG Signed Commits This skill walks contributors through two essential git contribution diff --git a/lfx-intercom/SKILL.md b/lfx-intercom/SKILL.md index 05313ae..691a55c 100644 --- a/lfx-intercom/SKILL.md +++ b/lfx-intercom/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-intercom description: > Add or fix Intercom integration in an LFX Angular app. Detects existing @@ -8,8 +10,6 @@ description: > allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion --- - - # LFX Intercom Integration Skill diff --git a/lfx-pr-catchup/SKILL.md b/lfx-pr-catchup/SKILL.md index ed54646..3213f0f 100644 --- a/lfx-pr-catchup/SKILL.md +++ b/lfx-pr-catchup/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-pr-catchup description: > Morning PR catch-up dashboard — shows unresolved comments, status changes, @@ -6,8 +8,6 @@ description: > allowed-tools: Bash, Read, Glob, Grep, AskUserQuestion --- - - # PR Catch-Up Dashboard @@ -242,7 +242,18 @@ gh pr view $NUMBER --repo $OWNER/$REPO --json comments,reviews,statusCheckRollup gh pr checks $NUMBER --repo $OWNER/$REPO ``` -Present the drill-down in a readable format, then offer to drill into another PR or end. +Present the drill-down in a readable format. + +If the drilled-down PR has unresolved review comments (HIGH signal), proactively suggest: + +``` +This PR has unresolved comments. Want me to address them? +Run: /lfx-pr-resolve (e.g., /lfx-pr-resolve #142) +``` + +Substitute the actual PR number (the same one the user just drilled into) when surfacing the suggestion. + +Then offer to drill into another PR or end. ## Scope Boundaries diff --git a/lfx-pr-resolve/SKILL.md b/lfx-pr-resolve/SKILL.md index 998fd70..6a6fc3c 100644 --- a/lfx-pr-resolve/SKILL.md +++ b/lfx-pr-resolve/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-pr-resolve description: > Address PR review comments — fetches unresolved threads, makes code changes, @@ -9,8 +11,6 @@ description: > allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion, Skill --- - - # PR Review Comment Resolver diff --git a/lfx-preflight/SKILL.md b/lfx-preflight/SKILL.md index f5d1fbb..df9309a 100644 --- a/lfx-preflight/SKILL.md +++ b/lfx-preflight/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-preflight description: > Pre-PR validation for any LFX repo — Phase 1 auto-fixes (license, format, lint, build), @@ -7,8 +9,6 @@ description: > allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion --- - - # Pre-Submission Preflight Check diff --git a/lfx-product-architect/SKILL.md b/lfx-product-architect/SKILL.md index 988953a..fbcf223 100644 --- a/lfx-product-architect/SKILL.md +++ b/lfx-product-architect/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-product-architect description: > Understand LFX system architecture, decide where code should go, trace data flows, @@ -8,8 +10,6 @@ description: > allowed-tools: Bash, Read, Glob, Grep, AskUserQuestion --- - - # LFX Architecture Guide diff --git a/lfx-research/SKILL.md b/lfx-research/SKILL.md index c1e5a9f..85b2f4e 100644 --- a/lfx-research/SKILL.md +++ b/lfx-research/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-research description: > Read-only exploration skill for LFX repos — upstream API validation, codebase @@ -7,8 +9,6 @@ description: > allowed-tools: Bash, Read, Glob, Grep, AskUserQuestion, WebFetch --- - - # LFX Research & Exploration diff --git a/lfx-setup/SKILL.md b/lfx-setup/SKILL.md index 34d9838..d5bf381 100644 --- a/lfx-setup/SKILL.md +++ b/lfx-setup/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-setup description: > Environment setup for any LFX repo — prerequisites, clone, install, env vars, @@ -7,8 +9,6 @@ description: > allowed-tools: Bash, Read, Glob, Grep, AskUserQuestion --- - - # LFX Environment Setup Guide diff --git a/lfx-snowflake-access/SKILL.md b/lfx-snowflake-access/SKILL.md index 1962272..1b8fd96 100644 --- a/lfx-snowflake-access/SKILL.md +++ b/lfx-snowflake-access/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-snowflake-access description: > Guide users through requesting Snowflake access at the Linux Foundation. Handles two request @@ -13,8 +15,6 @@ description: > allowed-tools: Bash, Read, Glob, Grep, AskUserQuestion, WebFetch --- - - # Snowflake Access Request Guide diff --git a/lfx-test-journey/SKILL.md b/lfx-test-journey/SKILL.md index f34efa5..8d5951f 100644 --- a/lfx-test-journey/SKILL.md +++ b/lfx-test-journey/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-test-journey description: > Combine multiple feature branches across repos into worktrees for @@ -7,8 +9,6 @@ description: > allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion --- - - # Journey Testing — Multi-Branch Integration Worktrees diff --git a/lfx-ui-builder/SKILL.md b/lfx-ui-builder/SKILL.md index eb6c26a..d3d7df8 100644 --- a/lfx-ui-builder/SKILL.md +++ b/lfx-ui-builder/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx-ui-builder description: > Generate compliant Angular 20 frontend code — components, services, templates, @@ -7,8 +9,6 @@ description: > allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion --- - - # LFX Frontend Code Generation @@ -78,8 +78,6 @@ Every new `.ts`, `.html`, and `.scss` file MUST start with the appropriate licen **HTML (`.html`):** ```html - - ``` **SCSS (`.scss`):** diff --git a/lfx/SKILL.md b/lfx/SKILL.md index 37f3e9f..af64dfe 100644 --- a/lfx/SKILL.md +++ b/lfx/SKILL.md @@ -1,4 +1,6 @@ --- +# Copyright The Linux Foundation and each contributor to LFX. +# SPDX-License-Identifier: MIT name: lfx description: > Starting point for LFX development. Describe what you want in plain language @@ -6,8 +8,6 @@ description: > allowed-tools: Bash, Read, Glob, Grep, AskUserQuestion, Skill --- - - # LFX — Your Starting Point @@ -75,8 +75,13 @@ Listen to what the user says and classify their intent. **Do not ask technical q | "What APIs ...", "Does ... exist?", "Find ...", "Research ..." | To explore and research | `/lfx-research` | | "Check my changes", "Ready for PR?", "Validate ...", "Preflight" | To validate before PR | `/lfx-preflight` | | "Address PR comments", "Fix review feedback", "Resolve PR threads", "Handle PR comments" | To address PR review feedback | `/lfx-pr-resolve` | +| "Show me my PRs", "Morning catch-up", "PR status overview", "Which PRs need attention", "What's stale" | To see open PR status across repos | `/lfx-pr-catchup` | | "Set up", "Install", "Environment", "Getting started" | Environment setup | `/lfx-setup` | | "Test a journey", "Combine branches", "Integration test", "Test across branches", "Multi-branch test" | To test across branches | `/lfx-test-journey` | +| "Set up Git signing", "Configure DCO", "GPG keys for commits", "Why aren't my commits Verified", "git commit -s" | Git signing / DCO setup | `/lfx-git-setup` | +| "Fix Intercom", "Audit Intercom", "Add Intercom integration", "JWT setup for Intercom", "Intercom CSP" | Intercom integration in an LFX Angular app | `/lfx-intercom` | +| "Add a Snowflake connector", "Scaffold a CDP source", "New crowd.dev data source", "snowflake-connector platform" | Scaffold a new CDP Snowflake connector | `/lfx-cdp-snowflake-connectors` | +| "I need Snowflake access", "Add me to Snowflake", "Need a service account", "Request Snowflake permissions" | Request Snowflake access via Terraform PR | `/lfx-snowflake-access` | | "Show me an example", "How do I use this?", "Help" | Guidance | Show quickstart examples | ## Step 3: Translate and Route @@ -157,6 +162,49 @@ Skill(skill: "lfx-test-journey", args: "status") Skill(skill: "lfx-test-journey", args: "refresh committee-onboarding") ``` +### Routing to `/lfx-pr-catchup` + +Pass an org filter or stale-days override if the user mentioned one, otherwise invoke with no args: + +``` +Skill(skill: "lfx-pr-catchup") +Skill(skill: "lfx-pr-catchup", args: "linuxfoundation") +Skill(skill: "lfx-pr-catchup", args: "stale=14") +``` + +### Routing to `/lfx-git-setup` + +No translation needed — invoke directly: + +``` +Skill(skill: "lfx-git-setup") +``` + +### Routing to `/lfx-intercom` + +No translation needed — the skill audits and fixes the Intercom integration in the current Angular repo: + +``` +Skill(skill: "lfx-intercom") +``` + +### Routing to `/lfx-cdp-snowflake-connectors` + +The skill scaffolds one connector per run. Pass the platform/source name if the user mentioned it: + +``` +Skill(skill: "lfx-cdp-snowflake-connectors") +Skill(skill: "lfx-cdp-snowflake-connectors", args: "platform: discourse, source: discourse_posts") +``` + +### Routing to `/lfx-snowflake-access` + +No translation needed — the skill collects user details and generates the Terraform PR for the lfx-snowflake-terraform repo: + +``` +Skill(skill: "lfx-snowflake-access") +``` + ### Showing Examples When the user asks for examples or help, read and present the quickstart guide: