Skip to content

feat: cross-harness skill portability for the open standard#128

Draft
ryzizub wants to merge 4 commits into
mainfrom
claude/vgv-wingspan-pr-230-1476f3
Draft

feat: cross-harness skill portability for the open standard#128
ryzizub wants to merge 4 commits into
mainfrom
claude/vgv-wingspan-pr-230-1476f3

Conversation

@ryzizub

@ryzizub ryzizub commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Description

Replicates the skill-portability work from VeryGoodOpenSource/vgv-wingspan#230 for this plugin. Goal: the skills degrade gracefully on non-Claude harnesses (Codex, Gemini CLI, OpenCode) via the Agent Skills open standard, with no change to Claude Code behavior. Single-source SKILL.md plus in-body fallbacks, no build step.

CI

  • detect-changed-skillslist-skills: validate-skill now runs against every skill each PR, so a malformed skill fails the build instead of silently vanishing on another host.
  • New frontmatter-guard job running .github/scripts/check-frontmatter.sh — covers the two gaps validate-skill leaves: a UTF-8 BOM (Gemini-fatal, passes validate-skill) and agents/**/*.md frontmatter, which no other check validates. (name-matches-directory was already enforced.)

In-body fallbacks

  • $ARGUMENTS literal-text fallbacks in very-good-analysis-upgrade and dart-flutter-sdk-upgrade (fire when the host does not substitute the token).
  • AskUserQuestion fallbacks in accessibility and create-project, backed by a shared skills/shared/references/interaction-fallbacks.md symlinked into each consuming skill.
  • MCP graceful degradation. This plugin's dominant Claude dependency is the dart / very-good-cli MCP (the analogue of Wingspan's context7). Skills now name the equivalent very_good / dart / flutter CLI fallback and never block when the server is absent (create-project, license-compliance, testing, layered-architecture, ui-package, flutter-reviewer). green-gate keeps its deliberate, hook-enforced MCP-only mandate on Claude Code and only adds the off-Claude fallback.

Docs

  • CONTRIBUTING.md: new "Cross-harness portability" section (names the tier-2 harnesses, the $ARGUMENTS/${CLAUDE_SKILL_DIR} guidance, the metadata: escape hatch for non-spec frontmatter, MCP/subagent/symlink notes); frontmatter guard added to "Validate before you push"; CI Checks table aligned to the real workflow jobs; name frontmatter rule tightened to the spec-conformance set.
  • CLAUDE.md: repository-structure block updated for skills/shared/.
  • config/cspell.json: agentskills, Codex, opencode.

Not included (differs from the source PR / not applicable here)

  • The reviewquality-review rename and the docs/portability/ reference docs (both dropped in #230).
  • Subagent "no subagent mechanism?" fallbacks — no skill in this plugin dispatches a subagent.
  • Reserved-command collision note — this plugin's skill names do not collide with host built-ins.
  • ${CLAUDE_SKILL_DIR} fallbacks (unused here) and create-pr/rebase destructive-op guards (no such skills).

Verified locally

  • .github/scripts/check-frontmatter.sh passes; cspell 0 issues; markdownlint 0 issues; claude plugin validate . passes (only the pre-existing root-CLAUDE.md warning); ci.yaml parses; list-skills yields 15 skills with skills/shared correctly excluded.
  • Symlinks stored as git mode 120000 (same blob as #230); check-frontmatter.sh keeps its exec bit.

Type of Change

  • New feature (feat)
  • Bug fix (fix)
  • Code refactor (refactor)
  • Documentation (docs)
  • CI change (ci)
  • Chore (chore)

Refs VeryGoodOpenSource/vgv-wingspan#230

🤖 Generated with Claude Code

Replicate the Phase 0 skill-portability work from
VeryGoodOpenSource/vgv-wingspan#230 for this plugin: make skills degrade
gracefully on non-Claude harnesses (Codex, Gemini CLI, OpenCode) via the
Agent Skills open standard, without changing Claude Code behavior.

- CI: validate every skill each run (list-skills) and add a frontmatter
  guard job (scripts/ci/check-frontmatter.sh) covering UTF-8 BOM detection
  and agents/**/*.md frontmatter, which no other check covers.
- $ARGUMENTS literal-text fallbacks in very-good-analysis-upgrade and
  dart-flutter-sdk-upgrade.
- AskUserQuestion fallbacks in accessibility and create-project, backed by
  a shared skills/shared/references/interaction-fallbacks.md symlinked into
  each consuming skill.
- MCP graceful degradation: the dart / very-good-cli MCP tools fall back to
  the equivalent very_good / dart / flutter CLI off Claude Code
  (create-project, license-compliance, testing, layered-architecture,
  ui-package, flutter-reviewer). green-gate keeps its hook-enforced
  MCP-only mandate on Claude Code and only adds the off-Claude fallback.
- CONTRIBUTING gains a Cross-harness portability section; CLAUDE.md
  structure block and cspell words updated.

Refs VeryGoodOpenSource/vgv-wingspan#230

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ryzizub
ryzizub requested a review from jorgecoca July 24, 2026 10:52
ryzizub and others added 3 commits July 24, 2026 14:49
Relocate check-frontmatter.sh from scripts/ci/ to .github/scripts/ so the
CI-only helper lives alongside the workflow that runs it. Update the ci.yaml
job command and the CONTRIBUTING references, and drop the scripts/ node from
the CLAUDE.md structure tree (dotfile CI dirs are not enumerated there).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Match the CONTRIBUTING frontmatter guidance in
VeryGoodOpenSource/vgv-wingspan#230: the spec's optional skills-ref linter
rejects top-level fields outside the six it allows, and nesting the Claude
Code extras under metadata: is the escape hatch if strict conformance is
ever needed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reconcile with VeryGoodOpenSource/vgv-wingspan#230: name the non-Claude
harnesses (Codex, Gemini CLI, OpenCode) the portability section targets, and
state the full spec-conformance rules for the skill name field (kebab-case,
no leading/trailing/consecutive hyphen, 1-64 chars, matches the directory).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ryzizub
ryzizub marked this pull request as ready for review July 24, 2026 15:34
@ryzizub
ryzizub requested a review from a team as a code owner July 24, 2026 15:34
@ryzizub ryzizub changed the title feat: cross-harness skill portability fallbacks feat: cross-harness skill portability for the open standard Jul 24, 2026
@ryzizub
ryzizub marked this pull request as draft July 27, 2026 09:03
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.

1 participant