Skip to content

Keel v3.0.0

Choose a tag to compare

@joseconti joseconti released this 16 Jul 17:34

Major release: Everything the workflow used to materialize only for Claude — the portability lock, the embedded skill, the native config package — now has a first-class container for every assistant the user actually works with: OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI and Windsurf alongside Claude Code, riding the two open standards that consolidated in 2025-2026 (AGENTS.md for agent instructions, Agent Skills for the skill format itself) so most other tools — opencode, Zed, Warp, JetBrains Junie, Kiro, Cline and more — are covered by the standards at no extra cost. The principle throughout: one source of content (the project's own recorded decisions), one container per tool, parity between containers as a duty.

Added

  • The portability lock is dual, always (references/project-state.md). The same KEEL block now lives in CLAUDE.md AND AGENTS.md in every project — created together, refreshed together, stamped together. Claude reads the first; Codex, Copilot, Cursor, Windsurf, opencode, Zed, Warp, Junie, Kiro, Cline and most other tools read the second natively. Gemini CLI, whose default context file is GEMINI.md, gets one recorded pick when the user works with it: a GEMINI.md mirror, or context.fileName in .gemini/settings.json including AGENTS.md. The lock text itself is now assistant-neutral (embedded-copy paths name both trees; the continuation-prompt pointer no longer assumes .claude/). The lock-freshness check (references/keel-maintenance.md) refreshes both files — and creates the missing AGENTS.md on projects that predate the dual lock.
  • The embedded skill is dual (references/project-state.md). The embed now goes to .claude/skills/keel/ + .agents/skills/keel/, identical byte for byte: between the native tree and the open Agent Skills discovery convention, virtually every assistant loads Keel as a project skill on its own. The verified full-copy protocol applies to each tree; version sync always touches both, so they can never diverge. The update check (references/keel-maintenance.md) compares and updates both trees, and user-level install locations now include ~/.agents/skills/keel/ alongside ~/.claude/skills/keel/.
  • references/assistant-config.md — replaces references/claude-config.md, generalized. The offer now asks which assistants will work on the repo; the package materializes one container per accepted tool from the SAME sources (technical plan §Conventions, the loaded security profile, Keel's quality gates, the verified commands): rules with path scoping (.claude/rules/ with paths:, .cursor/rules/*.mdc with globs:, .github/instructions/*.instructions.md with applyTo:, .windsurf/rules/*.md with trigger: glob, and nested context files per source directory for Codex/Gemini, which have no glob mechanism); the seven verifier subagents (.claude/agents/ — which Cursor also reads natively — .github/agents/*.agent.md, .gemini/agents/*.md; Codex and Windsurf run the same checks inline per the standing fallback); permission allow-lists (.claude/settings.json, .codex/rules/ Starlark prefix rules, tools.allowed in .gemini/settings.json, .cursor/cli.json; Copilot and Windsurf have no committable equivalent — the verified commands are documented in the repo's development notes instead); and MCP registration (.mcp.json, .cursor/mcp.json, .vscode/mcp.json, [mcp_servers] in .codex/config.toml, mcpServers in .gemini/settings.json). New standing rules: a "—" cell removes the mechanism, never the duty; parity across containers is verified at the Phase 7 gate; per-tool size limits are respected by construction (Keel's under-40-lines rule sits far inside all of them); config syntax rots — the content is Keel's contract, the container is the tool's, verified against current docs when in doubt.
  • Project card line renamed: Assistant config: [none / rules / rules+agents / full] (tools: ...) — replaces Claude config:, now recording WHICH tools were accepted. MANIFEST Table 1 rows updated accordingly (lock, embed, rules, subagents, permissions, MCP registration all name their per-tool containers), and Table 3 carries the v3.0.0 reconciliation delta for existing projects (rename the card line, create the missing AGENTS.md, add the second embed tree, offer the new tools' containers, extend .gitignore and the gate exemption).
  • INSTALL.md: per-assistant installation. A user-level install-path table (Claude, Codex, Cursor, Gemini CLI, Copilot/VS Code, Windsurf, and the shared ~/.agents/skills/ convention that serves the standard-compliant tools with one copy), plus the note that an embedded Keel project needs no per-machine install at all. README and INSTALL are now written for the multi-assistant reality (repo docs).

Changed

  • The confidential-data pre-commit gate exempts both embedded-skill trees (.claude/skills/* and .agents/skills/* — the canonical trees that legitimately contain the gate's own patterns); the assistant-side hook note now points at the native pre-tool-use hooks of Claude Code, Codex, Gemini CLI and Cursor as the optional layer on top, git hook always the baseline. The scaffold's .gitignore adds the accepted tools' personal files (AGENTS.override.md, .gemini/.env, .gemini/tmp/) to the unconditional trio.
  • Phase 7 export-ignore covers every generated assistant config tree (.claude/, .agents/, .codex/, .cursor/, .gemini/, .windsurf/, .github/instructions/, .github/agents/, .vscode/mcp.json, nested context files, GEMINI.md when kept) — nothing from the package ships, whatever the tool. The pre-tag verification checks container parity, not just the Claude tree.
  • Phase 5 plan mode names its equivalents (Claude Code, Cursor, Gemini CLI's plan approval mode) with the same no-plan-mode fallback; the scaffold completes the package per tool; the subagent hooks in Phases 4/5/7/8 and the accessibility reference now point at references/assistant-config.md.
  • references/estimation-budget.md: subscription mode names the other flat-fee plans (ChatGPT Plus/Pro, Gemini AI plans), the price-verification step carries the OpenAI and Google official pricing pages next to Anthropic's, and the measured-usage examples add Codex /status and Gemini CLI /stats beside Claude Code /cost.
  • SKILL.md: the portability paragraph, the shared-templates entry and the reference index describe the dual lock, the dual embed and the generalized package; the token-economy line no longer assumes the coding assistant is Claude Code.