Repository navigation
docs: add the Codex skill-installer route and a skills.sh page config #11
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Validate skill | |
| on: | |
| push: | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| validate: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 | |
| with: | |
| node-version: 22 | |
| - name: Validate skills.sh discovery | |
| shell: bash | |
| run: | | |
| set -o pipefail | |
| npx --yes skills@1.5.23 add . --list | tee /tmp/skills-list.txt | |
| perl -pe 's/\e\[[0-9;]*[A-Za-z]//g' /tmp/skills-list.txt > /tmp/skills-list-plain.txt | |
| grep -qE "Found 2 skills?" /tmp/skills-list-plain.txt | |
| grep -q "diagnose-system-performance" /tmp/skills-list-plain.txt | |
| grep -q "brainstorm-performance-problem" /tmp/skills-list-plain.txt | |
| - name: Validate Claude Code plugin manifests | |
| shell: bash | |
| run: | | |
| node --input-type=module -e ' | |
| import { readFileSync, existsSync } from "node:fs"; | |
| const plugin = JSON.parse(readFileSync(".claude-plugin/plugin.json", "utf8")); | |
| const market = JSON.parse(readFileSync(".claude-plugin/marketplace.json", "utf8")); | |
| const fail = (m) => { console.error(m); process.exitCode = 1; }; | |
| if (plugin.name !== "codearqtech") fail(`plugin.json name is ${plugin.name}, expected codearqtech`); | |
| if (market.name !== "codearqtech") fail(`marketplace.json name is ${market.name}, expected codearqtech`); | |
| if (!market.owner?.name) fail("marketplace.json is missing owner.name"); | |
| if (!Array.isArray(market.plugins) || market.plugins.length === 0) fail("marketplace.json lists no plugins"); | |
| for (const entry of market.plugins ?? []) { | |
| if (!entry.name) fail("a marketplace plugin entry has no name"); | |
| if (typeof entry.source !== "string" || !entry.source.startsWith("./")) { | |
| fail(`plugin ${entry.name} has a relative source that does not start with ./`); | |
| } | |
| } | |
| if (!existsSync("skills/diagnose-system-performance/SKILL.md")) fail("plugin skills/ directory is missing a skill"); | |
| if (process.exitCode) throw new Error("plugin manifest validation failed"); | |
| console.log("plugin manifests ok"); | |
| ' | |
| - name: Validate installer | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| sh -n scripts/install.sh | |
| target_dir=$(mktemp -d) | |
| scripts/install.sh --target agents --scope project --project-dir "$target_dir" | |
| test -f "$target_dir/.agents/skills/codearqtech-diagnose-system-performance/SKILL.md" | |
| grep -q "^name: codearqtech-diagnose-system-performance$" \ | |
| "$target_dir/.agents/skills/codearqtech-diagnose-system-performance/SKILL.md" | |
| grep -q "codearqtech-diagnose-system-performance/references/decision-tree.md" \ | |
| "$target_dir/.agents/skills/codearqtech-brainstorm-performance-problem/SKILL.md" | |
| plain_dir=$(mktemp -d) | |
| scripts/install.sh --target agents --scope project --project-dir "$plain_dir" --namespace '' | |
| test -f "$plain_dir/.agents/skills/diagnose-system-performance/SKILL.md" | |
| ! grep -q "codearqtech-" "$plain_dir/.agents/skills/diagnose-system-performance/SKILL.md" | |
| gemini_dir=$(mktemp -d) | |
| scripts/install.sh --target gemini --scope project --project-dir "$gemini_dir" --gemini-commands | |
| test -f "$gemini_dir/.gemini/commands/codearqtech/diagnose-system-performance.toml" |