-
Notifications
You must be signed in to change notification settings - Fork 0
51 lines (44 loc) · 2.32 KB
/
Copy pathvalidate.yml
File metadata and controls
51 lines (44 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
name: Validate
on:
push:
branches: [main, development]
pull_request:
branches: [main, development]
workflow_dispatch:
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Validate gemini-extension.json is well-formed JSON
run: jq empty gemini-extension.json
- name: The extension runs the local MCP server, pinned to its major
# Majors pin majors: this manifest resolves @shipstatic/mcp at RUNTIME
# (npx), the same consumer class as the GitHub Action's CLI install
# line, so the pin freezes at the major for the life of this major.
run: |
test "$(jq -r '.mcpServers.shipstatic.command' gemini-extension.json)" = "npx"
jq -e '.mcpServers.shipstatic.args | index("@shipstatic/mcp@1")' gemini-extension.json
- name: The via restatement matches the vocabulary
# `gmn` restates DeploymentVia.GMN from @shipstatic/types. A manifest
# can import nothing, so the copy is fenced as a pinned literal: a
# respelling here would silently attribute every Gemini deploy as the
# generic `mcp` fallback (the readers drop unknown labels by design).
run: test "$(jq -r '.mcpServers.shipstatic.env.SHIP_VIA' gemini-extension.json)" = "gmn"
- name: The three plugin manifests state one version
run: |
G=$(jq -r .version gemini-extension.json)
C=$(jq -r .version .claude-plugin/plugin.json)
R=$(jq -r .version .cursor-plugin/plugin.json)
test "$G" = "$C" -a "$G" = "$R"
- name: Detect SKILL.md drift from canonical (npm/ship/SKILL.md)
# The canonical SKILL.md lives next to the @shipstatic/ship CLI it teaches.
# This plugin's copy must stay byte-identical — drift = stale instructions.
run: |
curl -fsSL https://raw.githubusercontent.com/shipstatic/ship/main/SKILL.md \
-o /tmp/canonical-SKILL.md
if ! diff -q /tmp/canonical-SKILL.md skills/using-ship/SKILL.md; then
echo "::error title=SKILL drift detected::skills/using-ship/SKILL.md has drifted from https://github.com/shipstatic/ship/blob/main/SKILL.md. Sync with: cp ../../npm/ship/SKILL.md skills/using-ship/SKILL.md"
diff /tmp/canonical-SKILL.md skills/using-ship/SKILL.md || true
exit 1
fi