Skip to content

Compile every agent's plugin from one canonical source #63

Description

@sabind

Component

Something else: a canonical source for every skill, rule and agent, and the compiler that builds each agent's plugin from it

Experience

  • Owner (maintains the plugin): edits each skill, rule and agent once, in one canonical folder. make build writes every agent's plugin from it, Claude Code's included, and a free check in CI fails when a generated file is stale or a target leaves something out.
  • Operator (works in Claude Code): notices nothing. The Claude Code plugin the build writes is byte for byte the one installed today.

Proposed behaviour

  • A canonical folder holds the Markdown of the eight skills, five rules and three agents, with neutral markers wherever agents differ. The spike in Spike: run the plugin in Codex, Cursor and Kiro as well as Claude Code #61 measured where they differ:
    • skill arguments;
    • ! shell prefetch;
    • ${CLAUDE_SKILL_DIR};
    • the question tool;
    • agent fields;
    • how rules reach a session.
  • One target folder per agent holds that agent's generator. This issue builds the compiler and the first target, Claude Code.
  • plugins/freethinking/ becomes the Claude Code target's generated output. Its first build must reproduce today's plugins/freethinking/ byte for byte, so the move changes no behaviour.
  • The build is stdlib Python behind make build. A stdlib unittest check under checks/ rebuilds into a temporary folder and fails when the checked-in output differs, or when a target is incomplete.

Motivating case

A first design kept plugins/freethinking/ as the source and added plain-word fallbacks beside each Claude Code feature, generating only the gaps. The author pivoted to compiling from canonical, for three reasons:

  • The spike showed agents differ in exactly the places markers express.
  • One fallback already failed: in the spike, Codex never read a template given only as ${CLAUDE_SKILL_DIR}.
  • One folder per agent keeps each agent's format changes in one place.

Done when

  • make build regenerates plugins/freethinking/ with no diff.
  • The freshness and completeness check runs in make validate.
  • claude plugin validate --strict still passes.

Depends on

Nothing; this is the first stream in .freethinking/strategies/multi-tool-plugin.md. Design with /freethinking:hld .freethinking/strategies/multi-tool-plugin.md canonical-source.

Activity

  1. added
    triageNot yet classified by a maintainer
    on Oct 22, 2026
  2. added theissue type on Oct 22, 2026
  3. changed the title [-]Skills read the same way in every agent, from one source[/-] [+]Compile every agent's plugin from one canonical source[/+] on Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    triageNot yet classified by a maintainer

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions