Proposal: Semantic verb system for cross-harness skill portability (10 verbs + optional `requires` frontmatter)
Problem
ECC's Cross-Harness architecture guide says: "Avoid platform-specific command assumptions." But there's no mechanism to enforce it. Skills use Claude Code tool names (Agent, Bash, Read) directly in their prose — making them non-portable even though the SKILL.md format itself is portable.
Example from ECC's own verification-loop:
npx tsc --noEmit # Claude Code-specific
grep -rn "sk-" . # Bash-specificThese commands don't work in Codex or Cursor without manual rewriting.
Proposal: 10 semantic verbs as a Cross-Harness extension
The Cross-Harness architecture already says SKILL.md is the most portable unit. This proposal adds a machine-enforceable layer on top:
- 10 semantic verbs — abstract operations (
{read},{write},{execute},{review}...) that every LLM runtime has an equivalent for requiresfrontmatter field — optional, declarative:requires: [read, review, verify]- Mapping table — Claude ↔ Codex ↔ Cursor ↔ CLI equivalents
Skills would use {review} instead of Agent(subagent_type: "code-reviewer"). A thin adapter (at the harness level, not in the skill) replaces {verb} with the runtime's native tool name.
Why this fits ECC
- Extends, doesn't replace. ECC's Cross-Harness guide already wants portable skills. This makes that guidance machine-verifiable.
- Backward compatible. Existing skills work unchanged.
requiresis optional. - Reduces manual sync burden. Cross-Harness section documents manual Codex/Cursor skill subsets — semantic verbs automate the translation.
- ECC is the right home. ECC has the most diverse user base across runtimes (Claude Code, Codex, Cursor, OpenCode, Gemini CLI).
Before/After — verification-loop
Before (Claude Code-only):
npx tsc --noEmit && npx eslint . && npm run test
grep -rn "sk-" . After (any runtime, auto-adapted):
{validate} with: type-check + lint + test
{read} for: hardcoded secrets patternClaude Code resolves {validate} → npx tsc --noEmit && npx eslint . && npm run test.
Codex resolves {validate} → its own test/lint mechanism.
Same skill, zero rewrites.
Open questions
- Should this be a
docs/architecture document, askills/workflow skill, or an extension to SKILL-DEVELOPMENT-GUIDE.md? - Would you want a reference implementation (10-verb mapping table + adapter) contributed to ECC, or is this better kept as a standalone reference that ECC skills optionally adopt?
- Is there appetite for making
requirespart of ECC's skill validation (CI check: "skill usesAgentbut doesn't declarerequires: [review]")?
Not proposing now
- No PR yet — waiting for #2377 and #2378 to resolve first. This is a discussion to gauge interest and direction.
- No runtime implementation included here — the adapter is a harness concern, not a skill concern. If there's interest, a standalone reference implementation can be submitted separately.
Disclosure
This proposal was developed with Claude Code assistance. The semantic verb concept and mapping table were iterated through AI-assisted review and refinement.
Source: affaan-m/ECC