Skip to content

feat(skill): preps for 3.4.0#33

Merged
mauriceboe merged 16 commits into
mainfrom
feat/preps-for-3.3.1
Jul 18, 2026
Merged

feat(skill): preps for 3.4.0#33
mauriceboe merged 16 commits into
mainfrom
feat/preps-for-3.3.1

Conversation

@jubnl

@jubnl jubnl commented Jul 12, 2026

Copy link
Copy Markdown
Collaborator

merge once 3.4.0 is live

@jubnl jubnl changed the title feat(skill): preps for 3.3.1 feat(skill): preps for 3.4.0 Jul 13, 2026
jubnl and others added 13 commits July 13, 2026 10:59
The skill documented the old behaviour as a limitation — "a page's nav entry uses
a fixed Blocks icon, the manifest `icon` is not used for nav (only on the
Admin/store card)". TREK now resolves the manifest `icon` against the full lucide
set everywhere it draws a plugin: navbar, bottom nav, trip-planner tab, dashboard
widget header, settings card, Admin row, and the store tile.

Also record the parts that bite authors:

- Any lucide name works, not the 14 the host used to map. An unknown name falls
  back to Blocks *silently*, so a typo just looks generic.
- `validate` warns on a name lucide doesn't have; registry CI rejects it. This is
  a CI-only gate — `preflight` does NOT replay it, so the warning is the only
  local catch.
- The store tile reads the registry ENTRY's `icon` (the aggregated index carries
  no manifests). `entry`/`publish` copy it from the manifest, so unlike
  requiredAddons there is nothing to hand-add. It is not parity-checked.
…eld list

- cli.md: the two-step, all-58 permission wizard ships IN 1.5.0, so the
  old 18-permission wizard was "SDK <= 1.4.x", not "<= 1.5.x" — the
  latter overlapped the target version and contradicted manifest.md.
- publishing.md: manifest<->entry parity compares trek and operatorEgress
  (per releaseEntryParity in the SDK), not nativeModules; fix the
  compared-field list so it no longer reads as if trek isn't checked.
- issue-template contact links and publishing.md fork/PR commands now
  point at liketrek/* (the koffi example homepage stays mauriceboe/
  trek-plugin-koffi — that repo did not move)
- plugin.json homepage/repository now point at liketrek/Plugin-Skill
- cli.md: the create wizard is a single grouped multiselect (58 grants
  under 13 area headings), not the rejected two-step areas flow
- publishing.md: the entry schema's strictness is unevaluatedProperties:
  false, and the CI-computed downloadCount exists only in the published
  index shape, never in a submitted entry
Codex does not read .claude/skills or a top-level skills/ directory; it scans
.agents/skills from the working directory up to the repo root, plus
$HOME/.agents/skills. Add a directory symlink so a plain clone of this repo
works in Codex with no setup, and document the install path in the README.

The SKILL.md itself needs no change — its frontmatter is already limited to
name + description, which is exactly what Codex requires.
plugin.json declared "license": "MIT" without shipping the license text.
marketplace.json had no description, which `claude plugin validate` flags.

The CI check is a dependency-free Node script rather than a `claude plugin
validate` call, so it needs nothing installed in the runner. It validates
manifest shape, SKILL.md frontmatter (name/description, slug form, the 1024-char
cap, unquoted-colon breakage), relative link resolution, and that every skill
has a matching .agents/skills entry for Codex discovery.
Mirrors the layout OpenAI ships in openai/plugins: .codex-plugin/plugin.json
with "skills": "./skills/", plus .agents/plugins/marketplace.json so the repo
can be added with `codex plugin marketplace add`. The .agents/skills symlink
already covered plain clones; this covers installing it from anywhere.

Codex requires an explicit version, so the Codex manifest carries one even
though the Claude manifest deliberately omits it.

Extends the validator with structural checks for both files — Codex publishes
no schema and has no validate CLI, so these are shape checks only.
workflow_dispatch takes a semver string, rewrites the version in
.codex-plugin/plugin.json, runs the format validator, commits, and optionally
pushes a v<version> tag. The commit is attributed to the actor who dispatched
the run rather than to github-actions[bot].

The underlying script runs standalone too:
  node .github/scripts/set-version.mjs 3.4.1
A v* tag (which the set-version workflow can push) validates the repo, checks
the tag against the manifest version, packages the skill, and attaches the
archive to a GitHub release.

The archive is reproducible — sorted entries, pinned timestamps, executable
bits preserved — so the same input always produces the same sha256. It holds
trek-plugin-dev/ at the top level with SKILL.md at its root, which is what the
Claude Skills API expects on upload and what unzipping into a skills directory
should yield.

A .skill copy ships alongside the .zip because it was asked for. It is
byte-identical; no tool consumes that extension.
@fbnlrz
fbnlrz force-pushed the feat/preps-for-3.3.1 branch from 765796e to 49cd6d6 Compare July 18, 2026 20:02
@mauriceboe
mauriceboe merged commit 485a351 into main Jul 18, 2026
1 check passed
@mauriceboe
mauriceboe deleted the feat/preps-for-3.3.1 branch July 18, 2026 20:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants