Repository navigation
Make the skills work when installed from skills.sh, and keep the listing current - #7
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 45179d0bb4
ℹ️ 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| probe=$(grep -ho 'mcp\.aave\.com' plugins/mcp/skills/yield-analysis/SKILL.md | head -1) | ||
| for i in $(seq 1 10); do | ||
| if curl -sf "https://www.skills.sh/aave/skills/yield-analysis" | grep -qF "$probe"; then |
There was a problem hiding this comment.
Make the refresh probe revision-specific
After the first successful refresh, every published snapshot will contain the fixed mcp.aave.com string. On any later push that changes a skill, the check therefore succeeds against the previous snapshot even if the install failed to refresh the listing, so it neither polls nor emits the intended warning. Compare revision-specific content, such as a current content hash or newly introduced text, instead.
Useful? React with 👍 / 👎.
5a2329b to
d4aa8b3
Compare
The skills CLI reads SKILL.md and ignores plugins/mcp/.mcp.json, so a skills.sh install lands five files naming tools the agent does not have. Each skill now opens with the server it needs and the command to add it. Adds skills.sh.json to group the repo page, and a README section for the npx route with the same caveat.
The repo had no workflows. validate.mjs checks every manifest parses, that each skill's frontmatter name matches its directory, that each one names the MCP server a skills-CLI install does not bring, and that skills.sh.json only groups skills that exist. The workflow also runs the skills CLI in --list mode (which exits before telemetry) and claude plugin validate. skills.sh serves a snapshot from the last time telemetry saw the repo, so a push does not update the page. README says so and gives the one command that does, and says why it is not automated.
Paths-filtered to the files that show on the page, and it verifies the snapshot moved rather than assuming it did.
The refresh is the install event, so DISABLE_TELEMETRY or DO_NOT_TRACK would make the job pass while doing nothing. GITHUB_TOKEN is optional for a public repo but keeps the CLI off the runner's shared rate limit.
f9d2437 to
fe729ce
Compare
Makes the repo work when it is installed the way skills.sh users install it, and keeps that listing current.
Based on
main, independent of #6.This used to stack on that PR, on the grounds that the CI added here runs
claude plugin validate ., which fails onmainuntil arenamesfix lands. That reason was wrong: the failure was a local CLI on 2.1.114, andrenameshas been a valid marketplace key since 2.1.193. The step installs the current CLI, so it passes againstmainas it stands.The skills were broken from skills.sh
npx skills add aave/skillsworks today and installs all five. It does not install the server: theskillsCLI readsSKILL.mdand nothing else, and ignoresplugins/mcp/.mcp.json. There is no MCP handling anywhere in its source. So an agent that installs from the directory gets five files whose every step names a tool it does not have.Each skill now opens with the server it needs and the command to add it, for Claude Code, Codex, or any other MCP client. The same three lines in all five, because skills install individually — someone can take
yield-analysisalone.skills.sh does not follow pushes
The page serves a snapshot from when the telemetry service last saw the repo, not a live read of GitHub. Three repos in the directory are 404 on GitHub right now and still render their full
SKILL.mdtext, which is how I confirmed it rather than inferring it.The only documented trigger for a re-read is an install through the CLI, so
refresh-listing.ymlruns one on every push tomainthat touches a file the page shows, then polls the page to confirm the snapshot actually moved. The verification reports without failing the run — the index is a third-party service and its lag is not a reason to reddenmain.The same call increments the public install counter, which is why the workflow is paths-filtered instead of running on every push. GitHub Actions sets
CI, which the CLI stamps on the event, so Vercel can discount it if they choose to.CI
There was no
.githubdirectory.scripts/validate.mjschecks that every manifest parses, thatmcp.jsonand.mcp.jsonhave not drifted apart, that each skill's frontmatternamematches its directory, that each one namesmcp.aave.com(guarding the bug above from coming back), and thatskills.sh.jsongroups only skills that exist and leaves none ungrouped.The workflow also runs
npx skills add . --list, which parses the repo exactly as an installer would and asserts all five are discovered. Checked the CLI source first:--listexits before any telemetry, so it validates discovery without recording an install.skills.sh.json
Groups the repo page into Transactions, Positions and Markets. Display only, documented here.
Also adds the install badge to the README. Drop that line if it is unwanted.
Context
A search for "aave" on skills.sh returns around a hundred skills from 45 third-party repos and none of them is ours. Some hardcode a
UiPoolDataProvideraddress that no longer matches the address book. Separately opened vercel-labs/skills#2153 asking for Aave on the Official Creators list.