agent-agnostic-skills

Detects and prevents harness lock-in when authoring agent skills, hooks, and scripts.

2|Updated May 13, 2026
One-click install
npx skills add https://github.com/curtisgalloway/public-skills --skill agent-agnostic-skills-curtisgalloway
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: agent-agnostic-skills
Source: https://github.com/curtisgalloway/public-skills/tree/main/plugins/agent-workflow/skills/agent-agnostic-skills
Command: npx skills add https://github.com/curtisgalloway/public-skills --skill agent-agnostic-skills-curtisgalloway

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Harness-specific assumptions in skills, hooks, and subagent definitions fail silently: a hardcoded path falls through, a tool-name table matches nothing, and a hook wired to the wrong event never fires, all while exiting zero. This Skill teaches how to write agent tooling that survives a change of harness (Claude Code, Antigravity, and future agents) and how to port tooling that did not. ## Core Features & Use Cases - Portability patterns: Resolution ladders instead of constants, matching on argument names instead of tool names, emitting every deny dialect at once, and per-path fail-open vs fail-closed decisions. - Mechanical scanning: Ships scripts/portability_scan.py, which flags single-harness paths, single-harness environment variables, brand context files without AGENTS.md, tool-name tables, and absolute home paths. - Dated harness reference: references/harness-matrix.md documents config locations, hook payloads, tool and argument names, capability denial, and session record formats per harness, with ground-truth commands to verify. - Use Case: Before publishing a skill that hardcodes ~/.claude/skills/ and keys logic on the Read tool name, run the scanner and apply the ladder and argument-name patterns so the same skill works under Antigravity without silent no-ops. ## Quick Start Review my skill directory for harness-specific assumptions and run the portability scan on it, then fix any lock-in it flags.

Frequently Asked Questions about agent-agnostic-skills

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write agent skills that work across Claude Code and Antigravity?▼

Bind to the most stable layer available: event payload data first, then relative paths, your own environment variables, and argument names, avoiding tool names and absolute install paths. Use ordered resolution ladders instead of single constants so a missing harness is one skipped rung rather than a silent failure.

How do I check a skill for harness lock-in automatically?▼

Run python3 scripts/portability_scan.py on the skill directory. It flags single-harness paths, single-harness environment variables, brand context files named without AGENTS.md, tool-name tables in code, and absolute home paths, exiting 1 when findings exist.

Why does my hook do nothing under a different agent harness?▼

Portability bugs fail silently: an unmapped tool name matches nothing, a wrong event name never fires, and a missing skills directory falls through to a fallback. After installing, deliberately trigger the behavior the hook should catch and confirm the log line appears.

Should a pre-tool-use hook match on tool names or argument names?▼

Match on argument names, case-folded, classified by kind: path-ish, command-ish, authored content, and everything else. Tool names like Read, view_file, and read_file churn between vendors and releases, while argument names describing the operation converge across harnesses.

Is it safe to emit allow decisions for every harness at once?▼

No. Deny fields are additive and safe to broadcast, but allow fields can grant permission: Claude Code's permissionDecision allow auto-approves the call. Emit only the allow dialect that requires it, such as Antigravity's decision allow, and stay silent where silence means no objection.

What are the limitations of the portability scanner?▼

A clean scan is necessary but not sufficient. The scanner cannot detect a wrong event name or a hook that never fires, and deliberately single-harness skills will light up by design; mark those with portability-ok or portability-scan: intentional and still provoke the tool to confirm it runs.