feat(plugins): add 5 new bundled plugins — typst, go-task, cfn-lint, envinfo, markdown-link-check#311
feat(plugins): add 5 new bundled plugins — typst, go-task, cfn-lint, envinfo, markdown-link-check#311javimosch wants to merge 1 commit into
Conversation
…envinfo, markdown-link-check Add plugin definitions for: - typst: modern markup-based typesetting system (LaTeX alternative) - go-task: task runner / build tool (simpler Make alternative) - cfn-lint: AWS CloudFormation template linter - envinfo: environment information reporter - markdown-link-check: broken link checker for markdown files
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Review — Head of Org Engineering: All new plugin files (cfn-lint, envinfo, go-task, markdown-link-check, typst) are syntactically valid JSON, scoped entirely to new files under plugins/, and correctly describe CLI tool wrappers with no secrets, destructive changes, or out-of-scope edits. (approved — review-only mode; merge when ready.) |
📝 WalkthroughWalkthroughFive new supercli plugins are registered: ChangesFive New Plugin Registrations
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Automaintainer Review Verdict: APPROVED — Purely additive PR adding 5 real, well-established CLI tools (typst, go-task, cfn-lint, envinfo, markdown-link-check). All plugin files follow the existing schema consistently (plugin.json, meta.json, install-guidance.json), source URLs are valid, binary names and install methods are correct, and there is zero overlap with any open PRs. No existing files modified. The Head of Org Engineering (javimosch) has also reviewed and confirmed the JSON is valid and changes are scoped correctly. CI checks are pending but JSON-only additive changes present no functional risk. |
|
Approved by automaintainer review team — ready for human merge |
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (1)
plugins/go-task/plugin.json (1)
15-15: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueCheck command inconsistent with other plugins.
Line 15 uses
"task --version"as the check command, while cfn-lint, envinfo, markdown-link-check, and typst all use the"which <binary>"pattern. Both approaches work, but consistency across the plugin catalog would improve maintainability.📝 Suggested consistency fix
- "check": "task --version", + "check": "which task",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugins/go-task/plugin.json` at line 15, The check command in the plugin configuration uses "task --version" while other plugins in the catalog use a "which <binary>" pattern for consistency. Update the check field from "task --version" to "which task" to align with the standard pattern used across the plugin catalog, ensuring consistency in plugin health checking approaches.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@plugins/cfn-lint/install-guidance.json`:
- Line 7: Remove the "Verify: " prefix from the shell command suggestion in the
install-guidance.json file. The line currently reads "Verify: cfn-lint
--version," but it should be changed to just "cfn-lint --version," since the
supercli plugins discover surfaces install steps verbatim and the prefix
prevents the command from being executable. Simply delete the "Verify: " text
from the beginning of that line.
In `@plugins/cfn-lint/plugin.json`:
- Around line 12-22: The install_guidance block is duplicated in both
plugin.json and separate install-guidance.json files across all plugins. Choose
one approach: either remove the install_guidance block from all plugin.json
files (cfn-lint, envinfo, go-task, markdown-link-check, and typst) and retain
only the separate install-guidance.json files, or delete all the
install-guidance.json files and keep only the install_guidance block in each
plugin.json. Ensure consistency across all affected plugins.
In `@plugins/envinfo/install-guidance.json`:
- Line 7: In the install-guidance.json file, remove the "Verify: " prefix from
the step entry that currently reads "Verify: envinfo --version". The command
should only contain "envinfo --version" without the prefix so that supercli
plugins discover can surface it as a valid, runnable shell command.
In `@plugins/go-task/install-guidance.json`:
- Line 7: Remove the "Verify: " prefix from the step in the
install-guidance.json file so that the entry contains only "task --version".
Since supercli plugins discover surfaces install steps verbatim as shell command
suggestions, the prefix makes the command non-executable. Change the line from
"Verify: task --version" to just "task --version" to ensure the command is
runnable when displayed to users.
In `@plugins/go-task/plugin.json`:
- Around line 39-53: In the task list command configuration object, change the
"resource" field value from "--list" to "tasks". This makes the resource naming
semantic and consistent with other plugins by using a meaningful noun paired
with an action instead of using a CLI flag as the resource identifier.
---
Nitpick comments:
In `@plugins/go-task/plugin.json`:
- Line 15: The check command in the plugin configuration uses "task --version"
while other plugins in the catalog use a "which <binary>" pattern for
consistency. Update the check field from "task --version" to "which task" to
align with the standard pattern used across the plugin catalog, ensuring
consistency in plugin health checking approaches.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 9960933e-f49d-41f0-b1b3-bb0b56fcef57
📒 Files selected for processing (15)
plugins/cfn-lint/install-guidance.jsonplugins/cfn-lint/meta.jsonplugins/cfn-lint/plugin.jsonplugins/envinfo/install-guidance.jsonplugins/envinfo/meta.jsonplugins/envinfo/plugin.jsonplugins/go-task/install-guidance.jsonplugins/go-task/meta.jsonplugins/go-task/plugin.jsonplugins/markdown-link-check/install-guidance.jsonplugins/markdown-link-check/meta.jsonplugins/markdown-link-check/plugin.jsonplugins/typst/install-guidance.jsonplugins/typst/meta.jsonplugins/typst/plugin.json
| "check": "which cfn-lint", | ||
| "install_steps": [ | ||
| "pip install cfn-lint", | ||
| "Verify: cfn-lint --version", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Remove the Verify: prefix from this step.
supercli plugins discover surfaces install steps verbatim, so this entry is treated as a shell command suggestion. Keeping the prefix makes the suggested command non-runnable.
Suggested fix
- "Verify: cfn-lint --version",
+ "cfn-lint --version",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "Verify: cfn-lint --version", | |
| "cfn-lint --version", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@plugins/cfn-lint/install-guidance.json` at line 7, Remove the "Verify: "
prefix from the shell command suggestion in the install-guidance.json file. The
line currently reads "Verify: cfn-lint --version," but it should be changed to
just "cfn-lint --version," since the supercli plugins discover surfaces install
steps verbatim and the prefix prevents the command from being executable. Simply
delete the "Verify: " text from the beginning of that line.
| "install_guidance": { | ||
| "plugin": "cfn-lint", | ||
| "binary": "cfn-lint", | ||
| "check": "which cfn-lint", | ||
| "install_steps": [ | ||
| "pip install cfn-lint", | ||
| "Verify: cfn-lint --version", | ||
| "supercli plugins install ./plugins/cfn-lint --on-conflict replace --json" | ||
| ], | ||
| "note": "Python tool. Install via pip or pipx: pipx install cfn-lint" | ||
| }, |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟠 Major
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check for install-guidance.json files and compare with embedded guidance
for plugin in cfn-lint envinfo go-task markdown-link-check typst; do
echo "=== $plugin ==="
if [ -f "plugins/$plugin/install-guidance.json" ]; then
echo "✓ Separate install-guidance.json exists"
# Extract install_guidance from plugin.json and compare
if [ -f "plugins/$plugin/plugin.json" ]; then
echo "Checking for duplication..."
jq '.install_guidance' "plugins/$plugin/plugin.json" > /tmp/embedded.json
jq '.' "plugins/$plugin/install-guidance.json" > /tmp/separate.json
if diff -q /tmp/embedded.json /tmp/separate.json > /dev/null; then
echo "⚠️ Content is identical (duplication confirmed)"
else
echo "ℹ️ Content differs"
diff /tmp/embedded.json /tmp/separate.json || true
fi
fi
else
echo "✗ No separate install-guidance.json found"
fi
echo
doneRepository: javimosch/supercli
Length of output: 837
Consolidate duplicated installation guidance across plugin manifests.
The install_guidance block in plugin.json (lines 12-22) is duplicated identically in separate install-guidance.json files for all plugins (confirmed for cfn-lint, envinfo, go-task, markdown-link-check, and typst). This creates a maintenance burden where any updates must be kept in sync across two files.
Either embed the guidance only in plugin.json and remove the separate files, or centralize it only in install-guidance.json and remove the embedded field from plugin.json.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@plugins/cfn-lint/plugin.json` around lines 12 - 22, The install_guidance
block is duplicated in both plugin.json and separate install-guidance.json files
across all plugins. Choose one approach: either remove the install_guidance
block from all plugin.json files (cfn-lint, envinfo, go-task,
markdown-link-check, and typst) and retain only the separate
install-guidance.json files, or delete all the install-guidance.json files and
keep only the install_guidance block in each plugin.json. Ensure consistency
across all affected plugins.
| "check": "which envinfo", | ||
| "install_steps": [ | ||
| "npm install -g envinfo", | ||
| "Verify: envinfo --version", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Remove the Verify: prefix from this step.
supercli plugins discover surfaces install steps verbatim, so this entry is treated as a shell command suggestion. Keeping the prefix makes the suggested command non-runnable.
Suggested fix
- "Verify: envinfo --version",
+ "envinfo --version",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "Verify: envinfo --version", | |
| "envinfo --version", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@plugins/envinfo/install-guidance.json` at line 7, In the
install-guidance.json file, remove the "Verify: " prefix from the step entry
that currently reads "Verify: envinfo --version". The command should only
contain "envinfo --version" without the prefix so that supercli plugins discover
can surface it as a valid, runnable shell command.
| "check": "task --version", | ||
| "install_steps": [ | ||
| "brew install go-task", | ||
| "Verify: task --version", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Remove the Verify: prefix from this step.
supercli plugins discover surfaces install steps verbatim, so this entry is treated as a shell command suggestion. Keeping the prefix makes the suggested command non-runnable.
Suggested fix
- "Verify: task --version",
+ "task --version",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "Verify: task --version", | |
| "task --version", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@plugins/go-task/install-guidance.json` at line 7, Remove the "Verify: "
prefix from the step in the install-guidance.json file so that the entry
contains only "task --version". Since supercli plugins discover surfaces install
steps verbatim as shell command suggestions, the prefix makes the command
non-executable. Change the line from "Verify: task --version" to just "task
--version" to ensure the command is runnable when displayed to users.
| { | ||
| "namespace": "task", | ||
| "resource": "--list", | ||
| "action": "list", | ||
| "description": "List tasks in the project", | ||
| "adapter": "process", | ||
| "adapterConfig": { | ||
| "command": "task", | ||
| "baseArgs": [ | ||
| "--list" | ||
| ], | ||
| "missingDependencyHelp": "Install go-task: brew install go-task" | ||
| }, | ||
| "args": [] | ||
| }, |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Search for other examples of flag-based resource names in existing plugins
echo "Searching for resource patterns in existing plugin manifests..."
fd -e json 'plugin.json' plugins/ --exec jq -r '
.commands[]? |
select(.resource != "self" and .resource != "_") |
"\(.namespace) → resource: \(.resource), action: \(.action)"
' {} \; 2>/dev/null | head -20Repository: javimosch/supercli
Length of output: 977
🏁 Script executed:
# First, examine the complete go-task plugin.json to understand its structure
cat plugins/go-task/plugin.jsonRepository: javimosch/supercli
Length of output: 1899
🏁 Script executed:
# Search for how resources/actions are used and routed in supercli
# Look for documentation or routing logic that explains the pattern
fd -type f -name "*.ts" -o -name "*.js" -o -name "*.md" | head -20
rg "resource.*action" --type ts --type js -C 2 | head -30Repository: javimosch/supercli
Length of output: 327
🏁 Script executed:
# Check if there are any other "--list" or flag-based resources in plugins
fd -e json 'plugin.json' plugins/ --exec grep -l "\"--" {} \;Repository: javimosch/supercli
Length of output: 50375
🏁 Script executed:
# Search for code that processes resource/action routing
rg "resource.*action" --type ts --type js -A 2 -B 2 | head -40Repository: javimosch/supercli
Length of output: 156
🏁 Script executed:
# Look for any other plugins using flag-like resources (starting with --)
fd -e json 'plugin.json' plugins/ | xargs grep -l '"--' | head -20Repository: javimosch/supercli
Length of output: 787
🏁 Script executed:
# Check if there are similar list/version command patterns in other plugins
fd -e json 'plugin.json' plugins/ | xargs grep -l '"list".*"action"' | head -10Repository: javimosch/supercli
Length of output: 957
🏁 Script executed:
# Look for any documentation or README about resource naming conventions
find . -name "README*" -o -name "*.md" | xargs rg -i "resource.*naming|resource.*convention" 2>/dev/null | head -20Repository: javimosch/supercli
Length of output: 156
🏁 Script executed:
# Search for adapter or routing logic more broadly
fd -type f \( -name "*.ts" -o -name "*.js" \) | xargs rg -l "adapter|resource|action" | head -10Repository: javimosch/supercli
Length of output: 664
🏁 Script executed:
# Examine git-lfs plugin to see similar --list pattern
cat plugins/git-lfs/plugin.json | head -100Repository: javimosch/supercli
Length of output: 4530
🏁 Script executed:
# Search for how the CLI is invoked - look for main entry or handler
fd -name "index.ts" -o -name "main.ts" -o -name "cli.ts" | head -5Repository: javimosch/supercli
Length of output: 387
🏁 Script executed:
# Check if there's documentation on routing in README
cat README.md 2>/dev/null | grep -A 10 -B 10 "resource\|action" | head -50Repository: javimosch/supercli
Length of output: 2798
Change resource: "--list" to resource: "tasks" for semantic consistency.
The --list command uses a CLI flag as the resource name instead of a semantic noun. This breaks the consistent pattern used across plugins like git-lfs, which use meaningful resource names (e.g., "track", "ls-files", "status") paired with actions ("list", "add", "show").
Rename the resource to "tasks" so the command invocation becomes supercli task tasks list instead of supercli task --list list, aligning with how other plugins structure list operations.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@plugins/go-task/plugin.json` around lines 39 - 53, In the task list command
configuration object, change the "resource" field value from "--list" to
"tasks". This makes the resource naming semantic and consistent with other
plugins by using a meaningful noun paired with an action instead of using a CLI
flag as the resource identifier.
Automated maintenance run by automaintainer.
Focus: OBJECTIVE: grow the plugin catalog toward 12000. Each run, add up to 5 new plugins (a directory under plugins// with plugin.json, meta.json, install-guidance.json matching the existing schema) for real, useful CLI tools NOT already present. Strictly additive; do not modify existing plugins; single PR.
WORK ALREADY IN FLIGHT — do not overlap:
These automaintainer pull requests are already open and awaiting review. Do NOT re-implement, refactor, or restructure the files they touch — pick non-overlapping work, and never recreate a change an open PR already makes. If your objective unavoidably overlaps one of these, choose a different, complementary improvement instead.
touches: plugins/gptscript/install-guidance.json, plugins/gptscript/meta.json, plugins/gptscript/plugin.json, plugins/ollama/install-guidance.json, plugins/ollama/meta.json, plugins/ollama/plugin.json, plugins/pagefind/install-guidance.json, plugins/pagefind/meta.json, plugins/pagefind/plugin.json, plugins/staticrypt/install-guidance.json, plugins/staticrypt/meta.json, plugins/staticrypt/plugin.json
touches: plugins/beets/install-guidance.json, plugins/beets/meta.json, plugins/beets/plugin.json, plugins/cmus/install-guidance.json, plugins/cmus/meta.json, plugins/cmus/plugin.json, plugins/cotton/install-guidance.json, plugins/cotton/meta.json, plugins/cotton/plugin.json, plugins/editly/install-guidance.json, plugins/editly/meta.json, plugins/editly/plugin.json (+18 more)
touches: plugins/directus/install-guidance.json, plugins/directus/meta.json, plugins/directus/plugin.json, plugins/kamal/install-guidance.json, plugins/kamal/meta.json, plugins/kamal/plugin.json, plugins/vercel/install-guidance.json, plugins/vercel/meta.json, plugins/vercel/plugin.json
touches: plugins/espanso/install-guidance.json, plugins/espanso/meta.json, plugins/espanso/plugin.json, plugins/espanso/skills/quickstart/SKILL.md, plugins/slidev/install-guidance.json, plugins/slidev/meta.json, plugins/slidev/plugin.json, plugins/slidev/skills/quickstart/SKILL.md, plugins/surrealdb/install-guidance.json, plugins/surrealdb/meta.json, plugins/surrealdb/plugin.json, plugins/surrealdb/skills/quickstart/SKILL.md (+4 more)
touches: plugins/delve/install-guidance.json, plugins/delve/meta.json, plugins/delve/plugin.json, plugins/delve/skills/quickstart/SKILL.md, plugins/deptry/install-guidance.json, plugins/deptry/meta.json, plugins/deptry/plugin.json, plugins/deptry/skills/quickstart/SKILL.md, plugins/flit/install-guidance.json, plugins/flit/meta.json, plugins/flit/plugin.json, plugins/flit/skills/quickstart/SKILL.md (+8 more)
touches: plugins/httpie/install-guidance.json, plugins/httpie/meta.json, plugins/httpie/plugin.json, plugins/newsboat/install-guidance.json, plugins/newsboat/meta.json, plugins/newsboat/plugin.json, plugins/tinygo/install-guidance.json, plugins/tinygo/meta.json, plugins/tinygo/plugin.json, plugins/unar/install-guidance.json, plugins/unar/meta.json, plugins/unar/plugin.json
touches: plugins/avifenc/install-guidance.json, plugins/avifenc/meta.json, plugins/avifenc/plugin.json, plugins/mediainfo/install-guidance.json, plugins/mediainfo/meta.json, plugins/mediainfo/plugin.json, plugins/metaflac/install-guidance.json, plugins/metaflac/meta.json, plugins/metaflac/plugin.json, plugins/oggenc/install-guidance.json, plugins/oggenc/meta.json, plugins/oggenc/plugin.json (+3 more)
touches: plugins/k0s/plugin.json, plugins/k3s/plugin.json, plugins/okteto-cli/plugin.json, plugins/oracle-cloud/plugin.json, plugins/up/plugin.json
Branch:
am/am-f17c27-th44xdSummary
Add 5 new bundled plugins: typst (modern typesetting), go-task (task runner), cfn-lint (CloudFormation linter), envinfo (env reporting), markdown-link-check (broken link detection). These are well-established CLI tools with active GitHub repos and stable releases, filling gaps in the catalog's documentation, infrastructure, and development tooling sections.
Diff:
Summary by CodeRabbit
Release Notes