Skip to content

chore: fix CI workflow, restructure SKILL.md headers, sync README/router with disk#52

Open
josep-reyero wants to merge 2 commits into
mainfrom
chore/bug-fixes-and-coverage
Open

chore: fix CI workflow, restructure SKILL.md headers, sync README/router with disk#52
josep-reyero wants to merge 2 commits into
mainfrom
chore/bug-fixes-and-coverage

Conversation

@josep-reyero

@josep-reyero josep-reyero commented May 4, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR delivers two classes of change: structural fixes that restore broken CI and header enforcement, plus content sync so README, the /lfx router, and the filesystem all agree on which skills exist.

Bug fixes

CI workflow restored (.github/workflows/license-header-check.yml)

  • Replaced placeholder SHA @874b1c3f4e5d6789abcdeffedcba1234567890ab with @main — the placeholder couldn't be resolved by GitHub Actions, so the workflow had never produced a single check run. ~22 of 30 LF repos pin to @main (matches the canonical lfx-backstage scaffold template).
  • Added with: block to extend scanning to markdown via include_files: ""*.md"" and pin the LFX-canonical copyright_line. JSON files (.markdownlint.json, evals.json) are intentionally excluded since JSON has no comment syntax.

SKILL.md license headers restructured (all 15 files)

  • Moved the copyright/SPDX header from HTML comments after the closing --- (where they landed at line ~12, past head -4) into YAML # comments on lines 2–3 of the frontmatter (after the opening ---). This keeps --- on line 1 — required by the frontmatter parser — while putting the header within the workflow's head -4 | grep window.
  • Verified empirically: a test SKILL.md with this format loaded correctly in Claude Code, and YAML parsing via Ruby confirmed all 15 production frontmatter blocks parse with name, description, allowed-tools keys intact.
  • After the YAML headers were added, the now-redundant <!-- Copyright --> / <!-- SPDX --> HTML comments after the closing --- were removed across all 14 affected files. The <!-- Tool names ... --> cross-platform guidance comment is preserved where present.

Other fixes

  • Added license header to README.md.
  • Fixed wrong clone URL in 3 places: linuxfoundation/skills.gitlinuxfoundation/lfx-skills.git (README.md lines 8, 41; docs/platform-install.md line 15). The old URL worked via GitHub redirect but breaks if anyone ever creates a real linuxfoundation/skills repo.

README/router/filesystem coverage

README synced with disk (3 lists, all now match ls -d lfx*/)

  • Verify autocomplete list, Skill Overview table, Project Structure tree all updated. Previously missing: /lfx-pr-resolve, /lfx-git-setup, /lfx-snowflake-access, plus partial coverage of /lfx-cdp-snowflake-connectors.
  • Added two undocumented coordinator references (fga-protected-types.md, indexed-data-types.md) and pr-resolve's evals/ to the project structure.

/lfx router intent table extended (lfx/SKILL.md)

  • Added intent rows + Routing sections for the 5 unrouted user-facing skills: /lfx-pr-catchup, /lfx-git-setup, /lfx-intercom, /lfx-snowflake-access, /lfx-cdp-snowflake-connectors. Now covers all 12 user-facing skills (/lfx-backend-builder and /lfx-ui-builder remain intentionally invoked via /lfx-coordinator, not directly).

Other coverage fixes

  • /lfx-coordinator learned to defer Intercom and CDP-Snowflake-connector requests to the specialized skills.
  • /lfx-pr-catchup cross-links to /lfx-pr-resolve from the drill-down step when a PR has unresolved comments.
  • /lfx-cdp-snowflake-connectors documents its MCP server prerequisite (5 mcp__claude_ai_LFX_BI_Layer__* tools) so users know what to set up.

Test plan

  • head -4 | grep ""Copyright The Linux Foundation"" passes for all 42 tracked .md files (simulated the upstream workflow locally — would PASS).
  • All 15 SKILL.md frontmatter parse correctly with required keys present.
  • README's 3 skill lists exactly match ls -d lfx*/.
  • /lfx routing table covers all 12 user-facing skills.
  • Empirical verification: a test SKILL.md with the new format loaded correctly in Claude Code, and existing skills (e.g., /lfx-git-setup) continue to load.
  • On merge, the license-header-check workflow run on main should be the first ever successful run for this repo — that's the proof.

🤖 Generated with Claude Code

…ter with disk

Phase 0 (bug fixes):
- Fix license-header-check workflow placeholder SHA (@874b1c... -> @main).
  GitHub Actions could not resolve the placeholder; the workflow had never
  produced a single check run. Match the org-canonical pattern (~22/30 LF
  repos pin to @main, including the lfx-backstage scaffold template).
- Add `with: copyright_line + include_files: "*.md"` to extend scanning to
  markdown (not in default filetypes).
- Restructure all 15 SKILL.md license headers as YAML comments inside the
  frontmatter (line 2-3, after opening `---`). Required because the upstream
  workflow runs `head -4 | grep` and the previous HTML comments landed at
  line ~12, after frontmatter. YAML comments are silently ignored by the
  frontmatter parser; verified all 15 files still parse correctly with
  `name`, `description`, `allowed-tools` keys intact.
- Add license header to README.md (top of file).
- Fix wrong clone URL in 3 places: linuxfoundation/skills.git was working
  via GitHub redirect but is fragile; updated to linuxfoundation/lfx-skills.git
  in README.md (lines 8, 41) and docs/platform-install.md (line 15).

Phase 1 (README/router coverage):
- Update README's three skill lists (Verify autocomplete, Skill Overview
  table, Project Structure tree) to include all 15 skills. Previously
  missing: /lfx-pr-resolve, /lfx-git-setup, /lfx-snowflake-access, plus
  partial coverage of /lfx-cdp-snowflake-connectors. Also added the two
  undocumented coordinator references (fga-protected-types.md,
  indexed-data-types.md) and pr-resolve's evals/ directory to the tree.
- Update /lfx routing table (lfx/SKILL.md) to cover the 5 unrouted skills:
  /lfx-pr-catchup, /lfx-git-setup, /lfx-intercom, /lfx-snowflake-access,
  /lfx-cdp-snowflake-connectors. Added matching Routing sections with
  Skill() invocation examples. /lfx-backend-builder and /lfx-ui-builder
  remain intentionally unrouted (invoked via /lfx-coordinator, not directly).
- Add "Defer to specialized skills" section to /lfx-coordinator so it
  hands off Intercom and CDP-Snowflake-connector requests instead of
  attempting full-stack coordination on them.
- Cross-link /lfx-pr-catchup → /lfx-pr-resolve in the drill-down step:
  if a drilled PR has unresolved comments, suggest invoking pr-resolve.
- Document MCP prerequisites at the top of lfx-cdp-snowflake-connectors
  (lists the 5 mcp__claude_ai_LFX_BI_Layer__* tools the skill calls).

Verification:
- All 42 tracked .md files now have copyright in `head -4` (simulated the
  upstream workflow locally — it would PASS).
- All 15 SKILL.md frontmatter still parses correctly via Ruby's YAML.
- README's 3 lists exactly match `ls -d lfx*/`.
- /lfx routing covers 12 user-facing skills (excludes builders by design).

Skipped from the planned scope:
- Standardizing skill descriptions with trigger phrases (deferred per
  reviewer direction — keep current descriptions).
- .gitignore cleanup items (deferred).
- install.sh "Available skills" output bug (will be made obsolete by the
  Phase 3 CLI rewrite).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Josep Garcia-Reyero Sais <josepreyero@gmail.com>
Copilot AI review requested due to automatic review settings May 4, 2026 12:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Restores and extends CI license-header enforcement while synchronizing the documented skill inventory across README and the /lfx router so docs, routing intent, and on-disk skills align.

Changes:

  • Fixes the broken CI reusable-workflow reference and expands license-header scanning to Markdown files.
  • Restructures SKILL.md frontmatter headers and updates /lfx routing intent + routing examples for previously unrouted skills.
  • Syncs README and install docs with the actual repo name/clone URL and current skill set on disk.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
README.md Adds license header, fixes clone URL, and updates skill lists/project structure to match on-disk skills.
docs/platform-install.md Updates clone URL/directory name to the correct repo.
.github/workflows/license-header-check.yml Restores the reusable CI workflow reference and configures it to include *.md files.
lfx/SKILL.md Adds frontmatter license header and expands routing intent + routing sections for additional skills.
lfx-coordinator/SKILL.md Adds frontmatter license header and instructs coordinator to defer certain requests to specialized skills.
lfx-pr-catchup/SKILL.md Adds frontmatter license header and cross-links drill-down output to /lfx-pr-resolve.
lfx-pr-resolve/SKILL.md Adds frontmatter license header.
lfx-git-setup/SKILL.md Adds frontmatter license header.
lfx-intercom/SKILL.md Adds frontmatter license header.
lfx-snowflake-access/SKILL.md Adds frontmatter license header.
lfx-cdp-snowflake-connectors/SKILL.md Adds frontmatter license header and documents MCP prerequisites/tools.
lfx-preflight/SKILL.md Adds frontmatter license header.
lfx-research/SKILL.md Adds frontmatter license header.
lfx-product-architect/SKILL.md Adds frontmatter license header.
lfx-setup/SKILL.md Adds frontmatter license header.
lfx-test-journey/SKILL.md Adds frontmatter license header.
lfx-ui-builder/SKILL.md Adds frontmatter license header.
lfx-backend-builder/SKILL.md Adds frontmatter license header.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread lfx/SKILL.md
Comment thread lfx-pr-catchup/SKILL.md Outdated
Comment thread .github/workflows/license-header-check.yml
Two of the three Copilot comments on PR #52:

1. Remove duplicate license header (the YAML frontmatter `# Copyright`
   from this branch + the pre-existing `<!-- Copyright -->` HTML comment
   after the closing `---` were both kept). Removed the redundant HTML
   `<!-- Copyright -->` and `<!-- SPDX-License-Identifier -->` lines
   across all 14 affected SKILL.md files. Kept the `<!-- Tool names ... -->`
   comment where present (different content, still useful as
   cross-platform guidance to readers). Collapsed the leftover blank
   lines so the post-frontmatter section stays clean.

2. Replace ambiguous `[number]` placeholder in lfx-pr-catchup's drill-down
   suggestion with `<pr-number>` and a concrete `#142` example to make
   it clear users shouldn't paste it verbatim.

The third Copilot comment (SHA-pin the reusable workflow) is being
addressed in a reply on the PR thread — sticking with @main per the
org-canonical pattern (~22/30 LF repos including the lfx-backstage
scaffold template pin to @main; supply chain risk is bounded since
both repos are linuxfoundation-controlled).

Verification:
- All 15 SKILL.md still parse as YAML with required keys present.
- All 15 still have copyright in `head -4` (license-header check passes).
- No remaining `<!-- Copyright -->` HTML comments anywhere.
- 13 files retain the tool-names comment (the 2 without it never had one).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Josep Garcia-Reyero Sais <josepreyero@gmail.com>
Copilot AI review requested due to automatic review settings May 5, 2026 11:14
@josep-reyero josep-reyero force-pushed the chore/bug-fixes-and-coverage branch from 125aff2 to 65fc245 Compare May 5, 2026 11:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 18 out of 18 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread lfx-ui-builder/SKILL.md
@@ -78,8 +78,6 @@ Every new `.ts`, `.html`, and `.scss` file MUST start with the appropriate licen

**HTML (`.html`):**
```html

@dealako dealako left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @josep-reyero 👋 — great housekeeping PR. The three-part scope (CI fix, license-header relocation, README/router sync) is well-reasoned and the execution is thorough: all 39 tracked .md files carry the header, the router routing sections match the intent table with no orphans, and the clone-URL fixes are complete. One over-deletion introduced a correctness bug that blocks merge, and the branch has picked up conflicts with main since PR #58 landed — both are straightforward to fix.


Step 1 — Issues

🔴 [blocking] lfx-ui-builder/SKILL.md:80 — Empty HTML license-header template

The cleanup that removed redundant <!-- Copyright --> / <!-- SPDX --> HTML comments caught one it shouldn't have: the .html example code block that tells the AI skill what header to write on every new Angular template. The block now reads:

**HTML (`.html`):**
```html
```

This is a correctness bug: the skill rule one line above says "Every new .ts, .html, and .scss file MUST start with the appropriate license header", but the example now instructs the AI to write nothing. Every Angular template generated by this skill will fail the license check that this very PR is wiring up.

Fix: restore the two header lines inside the block:

<!-- Copyright The Linux Foundation and each contributor to LFX. -->
<!-- SPDX-License-Identifier: MIT -->

The TS and SCSS examples are unaffected because they use // comments, not <!-- -->.


🔴 [blocking] Merge conflicts — rebase required

mergeable: CONFLICTING. After PR #58 merged to main, there are content conflicts in:

  • README.md
  • lfx-intercom/SKILL.md
  • lfx/SKILL.md

A git rebase main (or merge) is needed before this can land.


🟡 [minor] .github/workflows/license-header-check.yml:10@main floating ref (already acknowledged)

Covered in depth in the existing thread — I agree with your reasoning. Same-org trust boundary + org-wide @main convention + this replaces a definitively broken placeholder = defensible tradeoff. Pinning a SHA + adding a Renovate entry would be the supply-chain-hardened next step if the team ever adopts a coordinated SHA-pinning policy, but it isn't a blocker here.


⚪ [nit] YAML frontmatter # comments — quick load-test before merge

The # Copyright / # SPDX lines sitting inside YAML frontmatter (before name:) are valid YAML, and you've empirically verified them in Claude Code. Just noting: a quick cross-platform check (e.g. a Gemini or Copilot parse, or another Claude Code user loading /lfx from a fresh install) before merge is cheap insurance if anyone in the org runs skills on a different platform.


Step 2 — AI Comment Reconciliation (Copilot)

Copilot comment Position My assessment
Duplicate YAML+HTML header (lfx/SKILL.md:3) ✅ Resolved in 65fc245 Agree — cleaned up correctly across all 14 affected files
pr-catchup #[number] literal → template ✅ Resolved in 65fc245 Agree — <pr-number> + #142 example is clear
@main supply-chain risk 🔄 WONTFIX w/ justification Agree with author's analysis — not blocking for same-org use
Empty HTML block (lfx-ui-builder/SKILL.md:80) ❌ Still unaddressed Confirmed blocking — elevated above

Step 3 — Revision Tracking

Resolved since last round (commit 65fc245):

  • ✅ Duplicate header blocks removed across all 14 HTML-comment-carrying SKILL.md files
  • lfx-pr-catchup drill-down suggestion uses <pr-number> placeholder + #142 example

Still unaddressed:

  • ❌ Empty HTML block in lfx-ui-builder/SKILL.md (Copilot, line 80, this round)
  • ❌ Merge conflicts (introduced by PR #58 landing on main after this PR was opened)

Summary

🔴 Blocking: 2 issues — empty HTML license template (lfx-ui-builder/SKILL.md), merge conflicts (README.md, lfx-intercom/SKILL.md, lfx/SKILL.md)
🟡 Minor: 1 issue — @main floating ref (already acknowledged/defended; not blocking)
⚪ Nit: 1 issue — frontmatter # comment cross-platform load-test suggestion

🔴 Needs changes before approval

The fix for the HTML block is a two-line restore; the rebase is mechanical. Once those land, the rest of the PR is in good shape to merge.

🤖 Review generated with Claude Code (Opus 4.8) — consolidated from independent analysis + security-auditor + code-reviewer-pro subagents.

Comment thread lfx-ui-builder/SKILL.md
@@ -78,8 +78,6 @@ Every new `.ts`, `.html`, and `.scss` file MUST start with the appropriate licen

**HTML (`.html`):**
```html

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[blocking] The over-deletion caught the .html example block, not just the document-level header. The block is now empty:

```html

This means the skill will instruct the AI to write **no header** on new Angular template files, which will fail the license-header CI check this PR is wiring up. The TS and SCSS blocks are fine (they use `//` comments); only the HTML block used `<!-- -->` and got caught by the cleanup.

**Restore these two lines inside the ```html block:**
```html
<!-- Copyright The Linux Foundation and each contributor to LFX. -->
<!-- SPDX-License-Identifier: MIT -->

@dealako

dealako commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

@josep-reyero - do we still need this PR?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants