Skip to content

ci(lychee-online): drop the repo suffix and skip eval cases in claude-code-plugins - #990

Merged
kyle-sexton merged 1 commit into
mainfrom
ci/lychee-online-ccp-name
Nov 12, 2026
Merged

kyle-sexton merged 1 commit into
mainfrom
ci/lychee-online-ccp-name

Conversation

@kyle-sexton

Copy link
Copy Markdown
Member

No related issue: owner decision Q14 (failing workflows)

Summary

The claude-code-plugins online link check has failed every run in its history (last 10: all failure, latest run 42809150911). In that run, 40 of the 63 dead-link locations were eval case prompts and graders that cite made-up URLs by design (x.com/fakehandle/..., attacker.tld, sms-admin.corp.internal, github.com/acme/...). The workflow name also carries the repository name, which the naming decision drops.

Fix

  • Exclude every plugins/<p>/[skills/<s>/]evals/ tree from the online check. This replaces the old exclude for the attribution golden fixtures, which sits inside one of those trees.
  • Rename the workflow from "Maintenance Check Links Online Claude Code Plugins" to "Maintenance Check Links Online".

The remaining dead links are real and are fixed in claude-code-plugins itself. That repository's maintenance-file-dead-links.yml triggers on this workflow's name:; the claude-code-plugins fix PR adds the new name to its trigger, so it should land before the sync PR that carries this rename.

Verification

  • Every eval markdown file in claude-code-plugins sits under a path the new regex matches (git ls-files 'plugins/**/*.md' | grep -E '^plugins/[^/]+/.+/evals/' | grep -vE '^plugins/[^/]+/(skills/[^/]+/)?evals/' prints nothing), and plugins/evals/ (a plugin named evals) is not matched.
  • 40 of the 63 locations in the run's link-check-online-dead-links artifact match the regex.
  • After the sync lands in claude-code-plugins, a dispatched run of the workflow confirms the result.

Related

  • Consumer fix: melodic-software/claude-code-plugins (dead links and the maintenance-file-dead-links.yml trigger), linked once opened.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe

…-code-plugins

The claude-code-plugins online link check has failed every run since
2026-10-11. In run 42809150911, 40 of its 63 dead-link locations were
in eval case prompts and graders, which cite made-up URLs by design
(x.com/fakehandle/..., attacker.tld, corp.internal). Exclude every
plugins/<p>/[skills/<s>/]evals/ tree, which also covers the attribution
golden fixtures the old exclude named.

Rename the workflow to "Maintenance Check Links Online": workflow names
carry no repository suffix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
@kyle-sexton
kyle-sexton marked this pull request as ready for review November 12, 2026 00:07
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-12T00:08:58.485134Z a0280cc Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown

claude-review reviewed a0280cc7a68e4f212137ad0db780a78ca7dd681e: 0 finding(s), 0 as inline comments.

No findings. I reviewed the one changed file, components/lychee-online/targets/claude-code-plugins.yml.

  • Exclude regex: (^|/)plugins/[^/]+/(skills/[^/]+/)?evals/ covers plugins/<p>/evals/ and plugins/<p>/skills/<s>/evals/. By reading the pattern, it also covers the old attribution golden-fixtures path, so replacing that exclude loses nothing. A plugin named evals (plugins/evals/...) does not match.
  • Rename: Maintenance Check Links Online Claude Code Plugins appears nowhere else in this repository, so there is no stale citation here to reconcile. The PR body already says the consumer repo's maintenance-file-dead-links.yml trigger must land first. That sequencing sits outside this diff and I could not check it.
  • PR body contract: The body has No related issue: <reason> and the four required sections.

I did not run lychee or the regex against the consuming repository's file tree. The PR's claims about the 40 of 63 dead-link locations and the git ls-files check are author-claimed and unverified by me.

Observation, not a finding: the destination path in distribution/sync-manifest.yml:307 still carries the -claude-code-plugins suffix, so the file name keeps it while the workflow name: drops it. That is probably deliberate, since the file name has to stay unique per consumer, but I did not verify it.

@github-actions

Copy link
Copy Markdown

claude-security-review reviewed a0280cc7a68e4f212137ad0db780a78ca7dd681e: 0 finding(s), 0 as inline comments.

No security findings.

The diff changes one file, components/lychee-online/targets/claude-code-plugins.yml, with two edits:

  • It drops the repo suffix from the workflow name.
  • It widens the lychee --exclude-path regex to skip any plugins/<plugin>/(skills/<skill>/)?evals/ directory.

Neither edit touches a trust control. Both fall outside the skip-gate carve-outs, so the full review applied.

  • Trusted-actor list, token scope, kill switch, merge hold, token broker: none is touched.
  • Permissions and secrets: the diff changes none.
  • The uses: ...@main reference: it is unchanged context, not part of this diff.
  • The wider exclusion: it only stops the link checker from fetching URLs in eval cases. That removes outbound requests and exposes no secret or token. A missed broken link in those directories is a link-hygiene matter, not a security one.
  • The rename: it is cosmetic. The diff doesn't show whether the name feeds a required-check or ruleset match, but that is a CI-config concern with no exploit path.

I did not read PR context, settled-thread or prior-findings files, because the wrapper supplied none.

critical-findings: 0

@kyle-sexton
kyle-sexton merged commit c2c3eb5 into main Nov 12, 2026
24 checks passed
@kyle-sexton
kyle-sexton deleted the ci/lychee-online-ccp-name branch November 12, 2026 00:29
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.

1 participant