From b2dcc043810f7ee4a1bd8fec33c67941b1889248 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Mon, 27 Apr 2026 04:14:39 +0000 Subject: [PATCH] fix(codex): assemble complete plugin package and bump to 0.20.3 --- .agents/plugins/marketplace.json | 7 ++++-- .agents/plugins/plugins/flow/.codex-plugin | 1 + .../plugins/flow/.codex-plugin/plugin.json | 23 ------------------- .agents/plugins/plugins/flow/commands | 1 + .agents/plugins/plugins/flow/skills | 1 + .claude-plugin/marketplace.json | 2 +- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- gemini-extension.json | 2 +- package.json | 2 +- pyproject.toml | 4 ++-- tools/install.sh | 2 +- tools/validate-codex-manifest.py | 12 ++++++++++ 13 files changed, 28 insertions(+), 33 deletions(-) create mode 120000 .agents/plugins/plugins/flow/.codex-plugin delete mode 100644 .agents/plugins/plugins/flow/.codex-plugin/plugin.json create mode 120000 .agents/plugins/plugins/flow/commands create mode 120000 .agents/plugins/plugins/flow/skills diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 9fca7f7..4533da8 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -15,9 +15,12 @@ { "name": "flow", "description": "Unified toolkit for Context-Driven Development with spec-first planning, TDD workflow, and Beads integration", - "version": "0.20.2", + "version": "0.20.3", "source": { "source": "local", "path": "./plugins/flow" }, - "policy": { "installation": "AVAILABLE" }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, "category": "Development", "author": { "name": "cofin" } } diff --git a/.agents/plugins/plugins/flow/.codex-plugin b/.agents/plugins/plugins/flow/.codex-plugin new file mode 120000 index 0000000..d3e6aeb --- /dev/null +++ b/.agents/plugins/plugins/flow/.codex-plugin @@ -0,0 +1 @@ +../../../../.codex-plugin \ No newline at end of file diff --git a/.agents/plugins/plugins/flow/.codex-plugin/plugin.json b/.agents/plugins/plugins/flow/.codex-plugin/plugin.json deleted file mode 100644 index 99a6820..0000000 --- a/.agents/plugins/plugins/flow/.codex-plugin/plugin.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "flow", - "version": "0.20.0", - "description": "Unified toolkit for Context-Driven Development with spec-first planning, TDD workflow, and Beads integration", - "author": { "name": "cofin" }, - "homepage": "https://github.com/cofin/flow", - "repository": "https://github.com/cofin/flow", - "license": "MIT", - "keywords": ["flow", "context-driven-development", "beads", "tdd", "ai-agent", "workflow"], - "skills": "./skills/", - "interface": { - "displayName": "Flow", - "shortDescription": "Auto-route `.agents/` projects into Flow planning, refinement, implementation, and knowledge workflows", - "category": "Development", - "capabilities": ["Read", "Write"], - "defaultPrompt": [ - "Use the Flow skill to set up this project", - "Use the Flow skill to create a PRD for user authentication", - "Use the Flow skill to refine this spec so a lightweight implementer can execute it correctly on the first pass", - "Use the Flow skill to implement the current flow with TDD and preserved context" - ] - } -} diff --git a/.agents/plugins/plugins/flow/commands b/.agents/plugins/plugins/flow/commands new file mode 120000 index 0000000..b8b7e03 --- /dev/null +++ b/.agents/plugins/plugins/flow/commands @@ -0,0 +1 @@ +../../../../commands \ No newline at end of file diff --git a/.agents/plugins/plugins/flow/skills b/.agents/plugins/plugins/flow/skills new file mode 120000 index 0000000..7d399ff --- /dev/null +++ b/.agents/plugins/plugins/flow/skills @@ -0,0 +1 @@ +../../../../skills \ No newline at end of file diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index ae5c165..6285f79 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -11,7 +11,7 @@ { "name": "flow", "description": "Unified toolkit for Context-Driven Development with spec-first planning, TDD workflow, and Beads integration", - "version": "0.20.2", + "version": "0.20.3", "source": "./", "author": { "name": "cofin" diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index eeb3d5f..bb87899 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "flow", "description": "Unified toolkit for Context-Driven Development with spec-first planning, TDD workflow, and Beads integration", - "version": "0.20.2", + "version": "0.20.3", "author": { "name": "cofin" }, diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 2ef8956..1141e1b 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "flow", - "version": "0.20.2", + "version": "0.20.3", "description": "Unified toolkit for Context-Driven Development with spec-first planning, TDD workflow, and Beads integration", "author": { "name": "cofin" }, "homepage": "https://github.com/cofin/flow", diff --git a/gemini-extension.json b/gemini-extension.json index 787e7c3..b87dcdf 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,7 +1,7 @@ { "name": "flow", "description": "Unified toolkit for Context-Driven Development with spec-first planning, TDD workflow, and Beads integration", - "version": "0.20.2", + "version": "0.20.3", "contextFileName": "GEMINI.md", "plan": { "directory": ".agents" diff --git a/package.json b/package.json index 97ae261..4fed28e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "flow", - "version": "0.20.2", + "version": "0.20.3", "description": "Unified toolkit for Context-Driven Development", "type": "module", "main": ".opencode/plugins/flow.js", diff --git a/pyproject.toml b/pyproject.toml index 0a7cb84..27f904b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "flow" -version = "0.20.2" +version = "0.20.3" description = "Unified toolkit for Context-Driven Development" authors = [ { name = "cofin" }, @@ -26,7 +26,7 @@ dev = [ allow_dirty = true commit = false commit_args = "--no-verify" -current_version = "0.20.2" +current_version = "0.20.3" ignore_missing_files = false ignore_missing_version = false message = "chore(release): bump to v{new_version}" diff --git a/tools/install.sh b/tools/install.sh index a75b67f..1fff054 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -46,7 +46,7 @@ show_banner() { echo -e "${CYAN}" echo "╔══════════════════════════════════════════════════════════════╗" echo "║ Flow Framework - Plugin Installer ║" - echo "║ Version 0.20.2 ║" + echo "║ Version 0.20.3 ║" echo "╚══════════════════════════════════════════════════════════════╝" echo -e "${NC}" diff --git a/tools/validate-codex-manifest.py b/tools/validate-codex-manifest.py index eb681e9..1670214 100755 --- a/tools/validate-codex-manifest.py +++ b/tools/validate-codex-manifest.py @@ -53,6 +53,18 @@ def validate_marketplace(file_path: str | Path): if '..' in path: print(f" ERROR [plugin {name}]: path '{path}' must not contain '..'") errors += 1 + + # 4. Path must exist relative to marketplace file and contain a plugin manifest + marketplace_dir = file_path.parent + resolved_path = (marketplace_dir / normalized).resolve() + if not resolved_path.is_dir(): + print(f" ERROR [plugin {name}]: path '{path}' does not exist or is not a directory") + errors += 1 + else: + plugin_manifest = resolved_path / ".codex-plugin" / "plugin.json" + if not plugin_manifest.is_file(): + print(f" ERROR [plugin {name}]: path '{path}' is missing .codex-plugin/plugin.json") + errors += 1 return errors == 0