flowcore-io/usable
v0.2.0MIT
Knowledge-first workflow for agents backed by Usable. Search team knowledge before implementing, retrieve complete sources, separate evidence from assumptions, and verify before claiming success.
Changelog
All notable changes to this project are documented here.
Format based on Keep a Changelog. This project adheres to Semantic Versioning.
Unreleased
Added
- OpenAI submission ZIP alongside the existing tar.gz release, with root-level portable manifests, an allowlisted payload, integrity verification, and SHA-256 checksum.
- Five positive and three negative review scenarios, release notes, and a submission checklist. Scenarios still require live testing and a real walkthrough recording.
- OpenAI listing validation and a strict
--submissionreview-material check, with regression cases for listing limits, missing fields, and private reviewer metadata.
Fixed
- Shortened the directory subtitle to the 30-character limit and added the public support URL.
- CI now verifies and publishes both archive formats and checks both for reproducibility.
0.2.0 — 2026-08-24
Added
- Claude Code support alongside the Agent Plugins standard:
.claude-plugin/marketplace.json,.claude-plugin/plugin.json, and.mcp.json. Onlyskills/is shared between the two formats; filenames and one transport identifier differ, so both sets ship. - The public OAuth client ID
mcp_oauth_clientis declared for Claude Code in.mcp.jsonunderoauth.clientId, and documented for both clients'addcommands. - Drift guards for the duplicated configuration: the validator asserts
mcp.jsonand.mcp.jsondeclare the same servers pointing at the same URLs, and that the two plugin manifests agree on name and version. oauthblocks are validated fail-closed: onlyclientId,callbackPort, andscopesare permitted, so a client secret cannot ship by being an unrecognised field.- Usable brand assets:
assets/usable-icon.svg(composer icon) andassets/usable-logo.png(600×600 logo), taken from the Usable brand kit. - Codex interface metadata under the
extensions["com.openai"]namespace inplugin.json: display name, short and long descriptions, developer name, category, website, privacy and terms URLs, brand colour#347cbf, icon and logo paths, and a default prompt. - Validation of client-extension file references: paths must be plugin-relative, must stay inside the plugin root, and must exist.
- Fourteen further self-tests covering all of the above; the suite is now 29 cases.
Changed
assets/is now included in the release archive allowlist.homepageand author URL now use the canonicalhttps://www.usable.dev, which is where the apex domain redirects.
Fixed
.claude-plugin/and.mcp.jsonadded to the release-archive allowlist. Without this the published artifact would have shipped a package Claude Code could not install.- Claude Code OAuth no longer requests every advertised Usable permission.
.mcp.jsonnow pins the live-supported read-only scopes, preventing Keycloak'sinvalid_scoperesponse.
Verified
- Claude Code 2.1.227 on macOS:
claude plugin marketplace add ./registers the marketplace andclaude plugin install usable@usableinstalls and enables the plugin at 0.1.0.
Known limitations
- A user-level MCP server named
usableshadows the plugin's declaration. Confirmed on Claude Code, where noplugin:usable:usableserver appeared while other plugins' servers did. This upgrades the Codex-side collision risk from hypothesis to confirmed behaviour, and it means neither client's MCP step can be verified on a machine that already has such an entry. - Claude Code skills are not yet confirmed reaching the model. The plugin installs, but Claude Code exposes no CLI listing of available skills, so this needs an interactive check.
- Whether Codex reads the
interfaceobject from the inlinecom.openaiextension is still unverified visually — the CLI exposes no way to inspect resolved interface metadata. If the icon and website do not render, the fallback is a.codex-plugin/plugin.jsonoverlay, which must be added carefully because a malformed overlay could disturb skill discovery that currently works.
0.1.0 — 2026-08-07
First prerelease. No client has completed all five acceptance steps, so no client is listed as fully supported; Codex loads the package and both skills.
Added
- Initial package scaffold conforming to Agent Plugins
1.0.0. plugin.jsonmanifest, MIT licensed.usable-knowledge-workflowskill — read-first retrieval loop with knowledge receipts, freshness ranking, verification requirements, and explicit degraded mode.- Reference material for the workflow skill: evidence and verification, knowledge lifecycle, and security boundaries.
usable-knowledge-captureskill — verified writeback, gated on deduplication, redaction, and user confirmation.mcp.jsondeclaring the hosted Usable MCP server athttps://usable.dev/api/mcpoverstreamable-http, URL-only with no credentials.- Documentation: installation, authentication, supported clients, permissions and data flow, threat model, troubleshooting.
scripts/validate-package.mjs— schema, skill, path-containment, symlink, and credential checks with no dependencies.scripts/build-release.mjs— allowlisted release archive with SHA-256 checksum.- CI: pull-request validation and tag-triggered release workflows.
- Governance:
SECURITY.md,CONTRIBUTING.md,CODE_OF_CONDUCT.md, CODEOWNERS, issue and pull-request templates. - Codex marketplace descriptor at
.agents/plugins/marketplace.json. Codex installs plugins from marketplaces rather than archives, so the package was not installable there without it. - Verified Codex install guide at
examples/codex/README.md.
Verified
- OAuth discovery against production:
POST /api/mcpreturns401with aWWW-Authenticateheader carryingresource_metadata; RFC 9728 protected-resource metadata and RFC 8414 authorization-server metadata both resolve; PKCES256and dynamic client registration are supported. Both the origin-level and RFC 9728 path-suffixed metadata URLs return the same JSON document, and unmatched.well-knownpaths return a JSON404. - Codex CLI 0.146.0 on macOS: the package installs and both skills reach the model as
usable:usable-knowledge-workflowandusable:usable-knowledge-capture. - Reproducible release archive: two consecutive builds are byte-identical, under both bsdtar and GNU tar.
Known limitations
- No client has completed all five acceptance steps, so none is listed as fully supported. Codex passes step 1 only.
- The Codex MCP step is inconclusive, not passed: the test machine already had an
identical
[mcp_servers.usable]entry in~/.codex/config.toml, so the entry survived removing the plugin and cannot be attributed to it. A plugin server keyedusablemay also collide with a user-level server of the same name. - Claude Code is untested and expected to need a different format — it uses
.claude-plugin/plugin.jsonand was not part of the Agent Plugins launch lineup. - Headless authorization is not wired up.
client_credentialsanddevice_codeare advertised by the authorization server but neither is implemented or tested here. - The metadata advertises
resource: https://usable.devwhile the endpoint served ishttps://usable.dev/api/mcp. Whether the authorization server accepts the endpoint URL as a resource indicator, and whether token audiences validate at the endpoint, is untested. - No signed release attestations yet; releases carry immutable tags and SHA-256 checksums only.
- The release archive contains only Markdown and JSON. A marketplace or Git install
materialises the repository, so
scripts/andtests/are present in the installed copy; the client does not execute them.