Compare commits

...

4 Commits

Author SHA1 Message Date
Dickson Tsai
f976f01b42 project-artifact: document headless limitations and registry enumeration 2026-06-19 11:51:06 +00:00
Bryan Thompson
94258c5913 ci: pin validate-plugins + scan-plugins + bump-plugin-shas to self-healing CLI install (#3095)
* ci: bump validate-plugins action pin to self-healing CLI install

Bumps the pinned validate-plugins action SHA (f846a0bc -> 5d75f99) to pick up
two fixes already merged in claude-plugins-community:

1. Self-healing claude CLI install (community#233): the prior pin's install step
   was a bare `npm i -g @anthropic-ai/claude-code@latest && claude --version`,
   which intermittently stalled (a 28-min hang -> "native binary not installed")
   and jammed whichever bump PR caught it (e.g. desktop-commander #2985). The new
   step forces the optional native dep, verifies the binary, re-runs the
   postinstall on a miss, and bounds every network step with a timeout.

2. strict:false skills-only manifest synthesis: the prior pin hard-required a
   plugin.json for external git-subdir sources, false-failing skills-only entries
   that the marketplace server synthesizes a manifest for. This is what blocks
   #2997 (learn-with-coursera) and #2312 (netsuite-suitecloud) today; the bumped
   action synthesizes a minimal manifest for them instead.

No other change. The action stays on claude-cli-version: latest.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* ci: pin scan-plugins + bump-plugin-shas to self-healing action too

Extend the validate-plugins pin bump (this PR) to the other two shared actions
that install the claude CLI the same flaky way. All three now pin the same
claude-plugins-community SHA (d207465) carrying the self-healing install
(community#233 + #234): force the optional native dep, verify, re-run postinstall
on a miss, timeout every network step, retry with real reinstalls.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* ci: run validate on workflow-file changes (fix required-check deadlock)

A PR touching only .github/workflows/** (e.g. an action-SHA re-pin like this one)
never matched validate-plugins.yml's pull_request path filter, so the required
'validate' check never ran and the PR sat 'Expected — Waiting for status to be
reported' with no way to clear it (workflow_dispatch check runs aren't associated
with the PR, so they don't satisfy the required check; the ruleset has no bypass
actors). Add .github/workflows/** to the trigger so workflow-only PRs validate
in-context and can clear the gate — and so this PR unblocks itself.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 19:50:51 -07:00
Dickson Tsai
46a038ad2d Merge pull request #3094 from anthropics/dickson/add-project-artifact-plugin
Add project-artifact plugin
2026-06-18 19:03:54 -07:00
github-actions[bot]
2fea32e337 bump(desktop-commander): 7a9b2ff0 → fea06819 (#2985)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-18 20:26:25 -05:00
6 changed files with 21 additions and 6 deletions

View File

@@ -1126,7 +1126,7 @@
"url": "https://github.com/wonderwhy-er/DesktopCommanderMCP.git",
"path": "plugins/claude",
"ref": "main",
"sha": "7a9b2ff0339a7fdc29c06a9957b323ef478a1dde"
"sha": "fea06819cb1211658ae6c7fc98134c2ef2109838"
},
"homepage": "https://desktopcommander.app"
},

View File

@@ -51,7 +51,7 @@ jobs:
# createCommitOnBranch-based bump so commits are signed by GitHub and
# satisfy the org-level required_signatures ruleset on main.
- uses: anthropics/claude-plugins-community/.github/actions/bump-plugin-shas@e2019b2a01f11aa1484c53540b1cfab5eebbc299
- uses: anthropics/claude-plugins-community/.github/actions/bump-plugin-shas@d207465eb6ec02b6f3f1dbb131717830dc9ecc68
id: bump
with:
marketplace-path: .claude-plugin/marketplace.json

View File

@@ -196,7 +196,7 @@ jobs:
continue-on-error: true
# Pinned to claude-plugins-community#34 (WIF input support).
# TODO: re-pin to a main-branch SHA once #34 merges.
uses: anthropics/claude-plugins-community/.github/actions/scan-plugins@e85f0d65b4fc87f07862e1dcdc467950514414ec
uses: anthropics/claude-plugins-community/.github/actions/scan-plugins@d207465eb6ec02b6f3f1dbb131717830dc9ecc68
with:
# Anthropic auth via Workload Identity Federation — the action
# mints a GitHub OIDC token (id-token: write above) and the claude

View File

@@ -8,6 +8,12 @@ on:
- '*/agents/**'
- '*/skills/**'
- '*/commands/**'
# `validate` is a required status check, so a PR that touches ONLY workflow
# files (e.g. an action-SHA re-pin) would otherwise never trigger validate
# and sit "Expected — Waiting for status to be reported" forever (workflow_dispatch
# check runs aren't associated with the PR, so they don't satisfy it). Run
# validate on workflow changes too so those PRs can clear the gate in-context.
- '.github/workflows/**'
push:
branches: [main]
paths:
@@ -32,7 +38,7 @@ jobs:
with:
fetch-depth: 0
- uses: anthropics/claude-plugins-community/.github/actions/validate-plugins@f846a0bcb0e721b1f93d60e8b73e91dafc4a1e87
- uses: anthropics/claude-plugins-community/.github/actions/validate-plugins@d207465eb6ec02b6f3f1dbb131717830dc9ecc68
with:
marketplace-path: .claude-plugin/marketplace.json
# Official curated marketplace: SHA-pin (I5) is a HARD error.

View File

@@ -36,3 +36,6 @@ sequence so the dependency order is obvious and pulls live PR/CI/review state vi
- Artifact URLs are minted by the server. The plugin records yours after the first publish
so refreshes land on the same address — bookmark it or add it to your team's hub so
others can find it.
- Publishing needs an interactive session: headless (`claude -p`) runs don't have the
Artifact tool, so automation can build and update pages but the publish step happens
interactively.

View File

@@ -25,8 +25,9 @@ project-artifact structure stays domain-neutral.
1. **Resolve the artifact config, then locate the project.** Each project gets a directory
at `${CLAUDE_PLUGIN_DATA}/artifacts/<slug>/` holding `config.md` (see **"The artifact
config"** below) and `page.html` (the current render); listing `artifacts/` is the
registry of this skill's artifacts on this machine. If the
user names a project,
registry of this skill's artifacts on this machine (enumerate it with Glob or a
directory read — a shell listing of the data dir can be blocked in restricted
environments). If the user names a project,
load that slug; if exactly one config matches the session (its repo is the cwd, or its
project came up in conversation), use it; a config that exists means this is a
**refresh** — follow **"Refreshing an artifact"** below. No config means a first build:
@@ -100,6 +101,11 @@ project-artifact structure stays domain-neutral.
session published a newer version), WebFetch the URL to see the current content,
reconcile, then publish again.
Headless note: the Artifact tool is not available in non-interactive (`claude -p`)
sessions, and writing into the plugin data dir may require a permission grant the run
cannot answer. In that case build the page, save it where the caller asked, and report
that publishing needs an interactive session — don't improvise another publishing path.
## The artifact config (one per project)
A small markdown file at `${CLAUDE_PLUGIN_DATA}/artifacts/<slug>/config.md`, in the