Sync third-party and MCP marketplace plugins
Constraint: Public skills are published only by explicit administrator action unless they are tracked third-party market sources. Confidence: high Scope-risk: narrow Directive: Keep private/internal skills out of the public marketplace and preserve normal incremental market Git history. Tested: Marketplace validation passed.
This commit is contained in:
@@ -279,6 +279,10 @@
|
|||||||
"pluginName": "shadcn",
|
"pluginName": "shadcn",
|
||||||
"category": "Developer Tools",
|
"category": "Developer Tools",
|
||||||
"skillPath": "skills/shadcn",
|
"skillPath": "skills/shadcn",
|
||||||
|
"sparseCheckout": [
|
||||||
|
"skills/shadcn",
|
||||||
|
"LICENSE.md"
|
||||||
|
],
|
||||||
"brandColor": "#09090B",
|
"brandColor": "#09090B",
|
||||||
"manifestOverrides": {
|
"manifestOverrides": {
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
|
|||||||
@@ -3,5 +3,5 @@
|
|||||||
"name": "playwright浏览器自动化操作",
|
"name": "playwright浏览器自动化操作",
|
||||||
"version": "20260605",
|
"version": "20260605",
|
||||||
"keySource": "none",
|
"keySource": "none",
|
||||||
"syncedAt": "2026-07-27T03:12:39Z"
|
"syncedAt": "2026-07-27T03:14:35Z"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -627,14 +627,30 @@ function Get-Clone {
|
|||||||
$sparseCheckout = @($Source.sparseCheckout)
|
$sparseCheckout = @($Source.sparseCheckout)
|
||||||
}
|
}
|
||||||
$cloneArgs += @($Source.repo, $clonePath)
|
$cloneArgs += @($Source.repo, $clonePath)
|
||||||
Invoke-CheckedGit $cloneArgs
|
$maxAttempts = 3
|
||||||
if ($Source.ref) {
|
for ($attempt = 1; $attempt -le $maxAttempts; $attempt++) {
|
||||||
Invoke-CheckedGit @("-C", $clonePath, "fetch", "--depth", "1", "origin", $Source.ref)
|
Remove-PathIfExists -Path $clonePath -Within $CloneRoot
|
||||||
Invoke-CheckedGit @("-C", $clonePath, "checkout", "FETCH_HEAD")
|
$transportArgs = @()
|
||||||
}
|
if ($attempt -gt 1) {
|
||||||
if ($sparseCheckout.Count -gt 0) {
|
$transportArgs = @("-c", "http.version=HTTP/1.1")
|
||||||
$sparseArgs = @("-C", $clonePath, "sparse-checkout", "set", "--no-cone") + $sparseCheckout
|
}
|
||||||
Invoke-CheckedGit $sparseArgs
|
try {
|
||||||
|
Invoke-CheckedGit -GitArgs ($transportArgs + $cloneArgs)
|
||||||
|
if ($Source.ref) {
|
||||||
|
Invoke-CheckedGit -GitArgs ($transportArgs + @("-C", $clonePath, "fetch", "--depth", "1", "origin", $Source.ref))
|
||||||
|
Invoke-CheckedGit -GitArgs @("-C", $clonePath, "checkout", "FETCH_HEAD")
|
||||||
|
}
|
||||||
|
if ($sparseCheckout.Count -gt 0) {
|
||||||
|
$sparseArgs = @("-C", $clonePath, "sparse-checkout", "set", "--no-cone") + $sparseCheckout
|
||||||
|
Invoke-CheckedGit -GitArgs $sparseArgs
|
||||||
|
}
|
||||||
|
break
|
||||||
|
} catch {
|
||||||
|
if ($attempt -eq $maxAttempts) {
|
||||||
|
throw "Third-party source $($Source.id) clone failed after $maxAttempts attempts: $($_.Exception.Message)"
|
||||||
|
}
|
||||||
|
Start-Sleep -Seconds ([Math]::Pow(2, $attempt - 1))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$commit = (git -C $clonePath rev-parse HEAD).Trim()
|
$commit = (git -C $clonePath rev-parse HEAD).Trim()
|
||||||
return [ordered]@{
|
return [ordered]@{
|
||||||
|
|||||||
Reference in New Issue
Block a user