Repository navigation
Replies: 1 comment
|
Implementation plan for the revised design above, written with the Agent Skills Portability Implementation Plan
Goal: Make Architecture: The skill's portable core ( Tech Stack: Markdown (SKILL.md, references), YAML frontmatter, a Codex Spec: GitHub Discussion #14 — the Global Constraints
Task 1: Fix the broken
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Context
debriefwas originally designed as a Claude Code skill. The question raised here is how tomake it available to other Agent Skills-compatible runtimes — Codex in particular — while
preserving the richer Claude Code experience (nested skill invocation, memory, hooks,
CLAUDE.md, transcript access) where it's available.The first draft of this discussion proposed a
.codex-plugin/directory, per-host referenceforks (
references/claude.md,references/codex.md), and areferences/host-capabilities.mdcapability-negotiation layer. Before committing to that shape, I went and read the actual Agent
Skills specification, Claude Code's own plugin docs, OpenAI's Codex skills docs, and Anthropic's
own skill-authoring tooling — and tested the result against this repo directly. Several of the
original assumptions don't hold up. Below is what's actually true, followed by a smaller
concrete plan.
What the Agent Skills spec actually says
Primary sources: agentskills.io/specification,
github.com/anthropics/skills,
github.com/agentskills/agentskills.
A skill is a directory containing, at minimum, a
SKILL.mdfile:SKILL.mdfrontmatter fields, in full — there is nothing beyond this list:namedescriptionlicensecompatibility"Designed for Claude Code (or similar products)"metadataallowed-toolsWorth flagging: some of what came up in initial searches (SEO content on agensi.io,
thepromptindex.com, rzlt.io) claimed frontmatter fields like
trigger,version, andcompatible_agentsexist. They don't. The real spec has exactly the six fields above. I'mcalling this out explicitly because it's the kind of confidently-wrong claim that's easy to
build a design around without checking.
There is no capability-negotiation protocol anywhere in the spec. The
compatibilityfieldis free text — nothing parses it, nothing negotiates against it. The only mechanism the
ecosystem actually provides for "behave differently depending on the host" is writing the
SKILL.mdbody defensively: conditional prose like "if X is available, do Y; otherwise say Xisn't available and skip." That's it. This directly answers Open Question 1 from the
original post: neither the skill nor the host negotiates capabilities via any schema, because no
such schema exists. And it's already how this skill is written in several places — section 0 and
section 4 of
SKILL.mdalready say "if no memory system... is accessible in this environment,say so and skip this check" rather than assuming Claude Code's memory system exists.
.claude-plugin/is not part of the spec — it's Claude Code's own distribution systemThis is the load-bearing correction.
.claude-plugin/plugin.jsonandmarketplace.jsonareClaude Code's own plugin/marketplace mechanism (confirmed via
Claude Code's plugin docs) — how this repo currently
gets installed via
/plugin install. They are not mentioned anywhere in the Agent Skills spec,and Codex has no equivalent concept of a plugin manifest at all.
Concretely, that means:
.codex-plugin/doesn't correspond to anything Codex reads. There's no such convention..agents/skills/— repo-level (current directory → parentdirectories → repo root) and user-level (
~/.agents/skills/), perOpenAI's own docs. No manifest, no wrapper
directory, no plugin registration step. It just needs the
SKILL.mdfolder to exist at one ofthose paths.
skills/debrief/agents/openai.yamlfile — purely cosmetic (display name, icon, whether theskill can be auto-invoked or only via
$debrief). The skill works fully without it.So
skills/debrief/SKILL.md— right where it already lives,name: debriefmatching its parentdirectory
debrief/— already satisfies the spec as written. Nothing needs to move.I tested this empirically, not just from docs
GitHub CLI ships a (preview)
gh skillcommand that installs Agent Skills from any GitHub repointo the correct host-specific directory, for 40+ agent hosts including Codex, purely via the
skills/*/SKILL.mddiscovery convention the spec defines. I ran a read-only check against thisrepo, live, with zero changes made to it:
It found and rendered
skills/debrief/SKILL.mdcorrectly on the first try. That meansalmost certainly already works today, exactly as-is. The "make debrief installable in Codex"
goal this discussion opened with is already met by the repo's current layout — what's missing
isn't structure, it's (a) one file's content, and (b) documentation telling people the install
command exists.
What "evals" means, for anyone reading this who (like me, an hour ago) wasn't sure
A skill is prose, not code — you can't unit-test it with normal assertions. Anthropic's own
skill-creatorskill (shipped inanthropics/skills) defines the practice it uses internally:the previous version, when iterating).
deterministic output (a file converter, a fixed workflow), or an LLM-as-judge rubric for
skills with subjective output.
eval-viewer/generate_review.py) renders a side-by-side HTML view ofthe before/after outputs so a human can look at them and give feedback, which then drives the
next revision of the skill's wording.
Anthropic's guidance is explicit that subjective-output skills mostly want the rubric approach,
not hard assertions — and
debriefis squarely in that bucket. It produces a judgment call (aretrospective report), not a deterministic transform, so its evals should be a handful of
representative session-transcript scenarios graded by an LLM-judge rubric describing what a good
debrief report looks like for that scenario — not scripted pass/fail checks, and not the
heavier Docker/pass@5 benchmarking machinery built for teams needing CI-grade reliability
guarantees, which is more than this repo needs.
The original proposal's
evals/cases/*.md+evals/rubric.mdshape was already pointed theright direction — it just needed the explanation of what goes in it and why.
The actual gap, and live evidence of what happens if you fix it the wrong way
Once
.claude-plugin/is understood as Claude Code's own packaging (not something to fork perhost) and
SKILL.mditself is already mostly defensive, the real Claude-specific surface area inthis repo is almost entirely in one file:
skills/debrief/references/suggested-improvements.md.It routes every suggested improvement to one of: project/local memory, repo
CLAUDE.md, globalCLAUDE.md, or asettings.jsonhook — all Claude Code-specific mechanisms, with no fallbacklanguage for a host that has none of them.
There's also a live, present-tense example in this repo right now of why forking per-host
reference docs (as the original proposal suggested with
references/claude.md/references/codex.md) is the wrong shape: an untrackedAGENTS.mdfile already sits in thisrepo, produced by a mechanical find-and-replace of
CLAUDE.md. It's already wrong — itreferences
.Codex-plugin/plugin.json, a path that doesn't exist (the real plugin directory islowercase
.claude-plugin/, and Codex doesn't use plugin manifests in the first place). That'sthe exact "lowest-common-denominator fork drift" this discussion opened by saying it wanted to
avoid, caught in this repo before any of this design work even landed.
Revised plan
Smaller than the original proposal, because most of the original proposal's surface area turned
out not to correspond to anything either spec defines or Codex reads:
.codex-plugin/directory. Nothing reads it.references/host-capabilities.mdcapability-negotiation layer. No host implementsnegotiation; there's nothing to build against.
references/claude.md/references/codex.mdsplit. The Claude-specific surface arealives in one file. Fork it and you get exactly the
AGENTS.mdbug above, twice as fast.Instead:
suggested-improvements.mdwith a conditional preamble: route tomemory/hooks/
CLAUDE.mdwhen those exist; otherwise fall back to "whatever agent-instructionsfile this host reads" or say plainly that a destination isn't available on this host. Same
pattern
SKILL.mditself already uses successfully.AGENTS.md. Its content is almost entirely genericgit/release-engineering process — nothing in it is actually Claude Code-specific except the
one broken path. Cheapest fix: symlink
AGENTS.md→CLAUDE.mdso there is exactly one fileto keep correct, not two to keep in sync by hand.
skills/debrief/agents/openai.yamlfor a nicer Codex display nameand icon. Not required for the skill to work.
gh skill install Wavez/debrief-skill debrief --agent codex(or--agent claude-code, or anyof the ~40 other supported hosts). This is the actual "make debrief available in Codex"
deliverable — no repo restructuring required, just this line plus step 4.
evals/folder: 2-3 scenario files + one rubric, LLM-judge graded, matchingAnthropic's own "start small" guidance rather than the original proposal's five-case,
fully-scaffolded suite.
Answers to the original open questions
an explicit capability profile? — Neither exists in the ecosystem to build against. Write
SKILL.mdprose defensively instead; that's the only mechanism that actually exists.spec-sanctioned pattern (the
compatibilityfield's own example is literally"Designed for Claude Code (or similar products)"). No opposition needed.the evidence requirement, and the no-auto-apply rule are already pure prose and already
host-agnostic. Only the "where do I save this suggestion" destination logic
(
suggested-improvements.md) is Claude-specific, and it needs conditional prose in place, nota fork.
scenario evals, LLM-rubric graded (per Anthropic's own starting-point guidance), not a
cross-host equivalence suite — there's no mechanism to run the same skill identically across
hosts to compare against, since each host's tool surface differs by design.
Next steps
Planning to open a PR against this repo implementing points 4–7 above (the
evals/folder in afollow-up, since it benefits from a couple of real review cycles first). Flagging here before
starting in case anyone wants to weigh in on the
AGENTS.mdsymlink-vs-rewrite call in point 5,or has a different view on how much Codex-specific documentation belongs in this repo versus
just linking to
gh skill installand letting people install it their own way.All reactions