Add Call-E Codex plugin#61
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces the Call-E plugin, updates versions for Session Orchestrator and Bitbucket CLI, and refines the plugin manifest generation script to dynamically build installation URLs. It also enhances the post-mortem audit script with improved path normalization and multi-field extraction logic. Feedback was provided to address a limitation in the audit script's parser regarding multi-line close reasons and to avoid hardcoding the "main" branch in generated manifest URLs, which may cause broken links for some repositories.
| extract_close_reason_from_show_text() { | ||
| awk ' | ||
| /Close reason:/ { | ||
| sub(/^.*Close reason:[[:space:]]*/, "", $0) | ||
| exit | ||
| } | ||
| ' | ||
| } |
There was a problem hiding this comment.
The fallback awk parser for extracting the close reason only captures the first line where "Close reason:" is found. If the close reason in the bd show output is multi-line, subsequent lines will be ignored, which may result in missing important context or file paths during the audit. Consider updating the awk script to capture all lines until the next field or the end of the output.
| def build_raw_manifest_url(plugin: dict[str, str], plugin_root_relative: str) -> str: | ||
| manifest_path = ".codex-plugin/plugin.json" | ||
| if plugin_root_relative: | ||
| manifest_path = f"{plugin_root_relative}/{manifest_path}" | ||
| return f"https://raw.githubusercontent.com/{plugin['owner']}/{plugin['repo']}/main/{manifest_path}" |
There was a problem hiding this comment.
The build_raw_manifest_url function hardcodes the main branch in the GitHub raw URL. While common, some repositories may use master or other branch names as their default, which would result in a broken install_url. Since fetch_repo_archive already uses HEAD.zip to be branch-agnostic, consider if there is a way to determine the default branch from the archive or make this configurable to avoid broken links for non-main default branches.
| "category": "Tools & Integrations", | ||
| "source": "awesome-codex-plugins", | ||
| "install_url": "https://raw.githubusercontent.com/matk0shub/apple-productivity-mcp/main/.codex-plugin/plugin.json" | ||
| "install_url": "https://raw.githubusercontent.com/matk0shub/apple-productivity-mcp/main/plugins/apple-calendar/.codex-plugin/plugin.json" |
There was a problem hiding this comment.
CRITICAL: install_url points to non-existent subdirectory. The Apple Productivity plugin.json is at the repository root (.codex-plugin/plugin.json), not in plugins/apple-calendar/. The URL should be: https://raw.githubusercontent.com/matk0shub/apple-productivity-mcp/main/.codex-plugin/plugin.json
| "description": "Plan, run, and inspect Call-E phone call workflows from Codex through the calle CLI.", | ||
| "category": "Tools & Integrations", | ||
| "source": "awesome-codex-plugins", | ||
| "install_url": "https://raw.githubusercontent.com/CALLE-AI/call-e-integrations/main/packages/codex-plugin/plugin/.codex-plugin/plugin.json" |
There was a problem hiding this comment.
CRITICAL: install_url path mismatch for Call-E. The plugin files in this repo are at the root (.codex-plugin/plugin.json), but the URL points to packages/codex-plugin/plugin/.codex-plugin/plugin.json. The correct URL should be: https://raw.githubusercontent.com/CALLE-AI/call-e-integrations/main/.codex-plugin/plugin.json. Either fix the URL or move the plugin files into packages/codex-plugin/plugin/ subdirectory.
| "category": "Tools & Integrations", | ||
| "source": "awesome-codex-plugins", | ||
| "install_url": "https://raw.githubusercontent.com/BlockchainHB/launchfast_codex_plugin/main/.codex-plugin/plugin.json" | ||
| "install_url": "https://raw.githubusercontent.com/BlockchainHB/launchfast_codex_plugin/main/plugins/launchfast/.codex-plugin/plugin.json" |
There was a problem hiding this comment.
CRITICAL: install_url points to non-existent subdirectory. The Launch Fast plugin.json is at the repository root (.codex-plugin/plugin.json), not in plugins/launchfast/. The URL should be: https://raw.githubusercontent.com/BlockchainHB/launchfast_codex_plugin/main/.codex-plugin/plugin.json
| "category": "Tools & Integrations", | ||
| "source": "awesome-codex-plugins", | ||
| "install_url": "https://raw.githubusercontent.com/varaprasadreddy9676/team-codex-plugins/main/.codex-plugin/plugin.json" | ||
| "install_url": "https://raw.githubusercontent.com/varaprasadreddy9676/team-codex-plugins/main/plugins/openproject/.codex-plugin/plugin.json" |
There was a problem hiding this comment.
CRITICAL: install_url points to non-existent subdirectory. The OpenProject plugin.json is at the repository root (.codex-plugin/plugin.json), not in plugins/openproject/. The URL should be: https://raw.githubusercontent.com/varaprasadreddy9676/team-codex-plugins/main/.codex-plugin/plugin.json
| "category": "Tools & Integrations", | ||
| "source": "awesome-codex-plugins", | ||
| "install_url": "https://raw.githubusercontent.com/MohamedAbdallah-14/prompt-to-asset/main/.codex-plugin/plugin.json" | ||
| "install_url": "https://raw.githubusercontent.com/MohamedAbdallah-14/prompt-to-asset/main/plugins/prompt-to-asset/.codex-plugin/plugin.json" |
There was a problem hiding this comment.
CRITICAL: install_url points to non-existent subdirectory. The prompt-to-asset plugin.json is at the repository root (.codex-plugin/plugin.json), not in plugins/prompt-to-asset/. The URL should be: https://raw.githubusercontent.com/MohamedAbdallah-14/prompt-to-asset/main/.codex-plugin/plugin.json
| "category": "Tools & Integrations", | ||
| "source": "awesome-codex-plugins", | ||
| "install_url": "https://raw.githubusercontent.com/MohamedAbdallah-14/unslop/main/.codex-plugin/plugin.json" | ||
| "install_url": "https://raw.githubusercontent.com/MohamedAbdallah-14/unslop/main/plugins/unslop/.codex-plugin/plugin.json" |
There was a problem hiding this comment.
CRITICAL: install_url points to non-existent subdirectory. The unslop plugin.json is at the repository root (.codex-plugin/plugin.json), not in plugins/unslop/. The URL should be: https://raw.githubusercontent.com/MohamedAbdallah-14/unslop/main/.codex-plugin/plugin.json
| "category": "Tools & Integrations", | ||
| "source": "awesome-codex-plugins", | ||
| "install_url": "https://raw.githubusercontent.com/nebelov/yandex-direct-for-all/main/.codex-plugin/plugin.json" | ||
| "install_url": "https://raw.githubusercontent.com/nebelov/yandex-direct-for-all/main/plugins/yandex-direct-for-all/.codex-plugin/plugin.json" |
There was a problem hiding this comment.
CRITICAL: install_url points to non-existent subdirectory. The yandex-direct-for-all plugin.json is at the repository root (.codex-plugin/plugin.json), not in plugins/yandex-direct-for-all/. The URL should be: https://raw.githubusercontent.com/nebelov/yandex-direct-for-all/main/.codex-plugin/plugin.json
Code Review Summary (Incremental Review #2)Status: 3 CRITICAL Issues Found | Recommendation: Do not merge until validation regressions are corrected Overview
Previous Issues (RESOLVED by revert)The 7 install_url path issues from the initial review have been resolved by reverting those changes. The Call-E plugin addition was also completely reverted (files removed from repo). Issue Details - NEW in this increment (click to expand)CRITICAL
Other Observations (regressions, not directly in diff lines)
Files Reviewed (12 files with changes)
Fix Link: Fix these issues in Kilo Cloud Reviewed by step-3.5-flash · 2,018,276 tokens |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7617026f74
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| if [[ -e "$path" ]]; then | ||
| printf '%s\n' "$path" | ||
| continue | ||
| fi | ||
| if run_git_clean ls-files --error-unmatch -- "$path" >/dev/null 2>&1; then |
There was a problem hiding this comment.
Preserve historical scoped paths during audit filtering
filter_probable_repo_paths now keeps a candidate only if it exists in the current worktree or is currently tracked (git ls-files --error-unmatch). This drops legitimate scoped files from non-whitelisted directories (for example src/) when the closing change deleted or renamed them, so commit_matches_json never receives those paths and the audit can report a parser/timing miss despite valid commit evidence in history. The filter should also accept paths with git history (not just current existence/index presence).
Useful? React with 👍 / 👎.
|
Pushed follow-up commit What changed:
Local validation run:
Note on the earlier Kilo install URL comments: the nested manifest paths are intentional. I rechecked the seven flagged repos; the root
The remaining GitHub Actions suites are still |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1666675f0d
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| if args.report_stylometric_gaps and not args.quiet: | ||
| _emit_stylometric_gaps(sys.stdout, humanized) |
There was a problem hiding this comment.
Preserve pure JSON when reporting stylometric gaps
--json is documented as machine-readable output, but in detector-feedback file mode this path still prints human-readable stylometric lines to stdout after serializing the JSON payload. Running with --detector-feedback --json --report-stylometric-gaps therefore produces mixed output that is no longer valid JSON, which breaks downstream automation that parses stdout.
Useful? React with 👍 / 👎.
| check "SKILL.md has YAML frontmatter" "head -1 '$SKILL_DIR/SKILL.md' | grep -q '^---$'" | ||
| check "SKILL.md has name: goals" "grep -q '^name: goals' '$SKILL_DIR/SKILL.md'" | ||
| check "SKILL.md has tier: product" "grep -q '^[[:space:]]*tier:[[:space:]]*product' '$SKILL_DIR/SKILL.md'" | ||
| check "SKILL.md has tier: product when metadata is present" "! grep -q '^metadata:' '$SKILL_DIR/SKILL.md' || grep -q '^[[:space:]]*tier:[[:space:]]*product' '$SKILL_DIR/SKILL.md'" |
There was a problem hiding this comment.
CRITICAL: Validation check requires 'tier: product' in SKILL.md, but goals skill has no metadata section at all. This check will always fail and break CI. The check should be conditional on metadata presence (revert to the previous 'tier: product when metadata is present' condition) or add the missing metadata to SKILL.md.
| check "SKILL.md mentions bd for issue tracking" "grep -q 'bd ' '$SKILL_DIR/SKILL.md'" | ||
| check "SKILL.md mentions beads" "grep -qi 'beads' '$SKILL_DIR/SKILL.md'" | ||
| check "SKILL.md mentions /vibe for validation" "grep -q '/vibe' '$SKILL_DIR/SKILL.md'" | ||
| check "SKILL.md mentions \$validation for closeout" "grep -q '[$]validation' '$SKILL_DIR/SKILL.md'" |
Summary
Call-E plugin
Validation