Skip to content

Commit afa605e

Browse files
committed
initial commit
0 parents  commit afa605e

49 files changed

Lines changed: 10178 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.codex-plugin/plugin.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"name": "render",
3+
"version": "0.1.0",
4+
"description": "Deploy, debug, monitor, and troubleshoot Render services from Codex. Works with the Render CLI, with optional MCP for advanced workflows.",
5+
"author": {
6+
"name": "Render",
7+
"email": "support@render.com",
8+
"url": "https://render.com"
9+
},
10+
"homepage": "https://render.com",
11+
"repository": "https://github.com/render-oss/skills",
12+
"license": "MIT",
13+
"keywords": [
14+
"render",
15+
"deploy",
16+
"cloud",
17+
"blueprint",
18+
"mcp",
19+
"monitoring",
20+
"debugging"
21+
],
22+
"skills": "./skills/",
23+
"hooks": "./hooks/hooks.json",
24+
"mcpServers": "./.mcp.json",
25+
"interface": {
26+
"displayName": "Render",
27+
"shortDescription": "Deploy, debug, and monitor Render services with the Render CLI. Add MCP later for advanced workflows.",
28+
"longDescription": "Deploy, debug, and monitor Render services from Codex with bundled Render skills. Start with the Render CLI for Blueprint generation, validation, logs, and troubleshooting. Add the bundled MCP server later if you want direct creation, richer monitoring, and structured queries.",
29+
"developerName": "Render",
30+
"category": "Developer Tools",
31+
"capabilities": [
32+
"Interactive",
33+
"Write"
34+
],
35+
"websiteURL": "https://render.com/",
36+
"brandColor": "#8a05ff",
37+
"defaultPrompt": [
38+
"Help me install and authenticate the Render CLI for Render.",
39+
"Validate my render.yaml for Render.",
40+
"Help me set up Render MCP in Codex for advanced workflows."
41+
],
42+
"logo": "./assets/logo.svg"
43+
}
44+
}

.github/workflows/sync-skills.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Sync skills from render-oss/skills
2+
3+
on:
4+
schedule:
5+
- cron: "0 6 * * *"
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: write
10+
pull-requests: write
11+
12+
jobs:
13+
sync:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout plugin repo
17+
uses: actions/checkout@v4
18+
19+
- name: Sync skills
20+
run: ./scripts/sync-skills.sh --repo "https://github.com/render-oss/skills"
21+
env:
22+
GIT_TERMINAL_PROMPT: "0"
23+
24+
- name: Create pull request
25+
uses: peter-evans/create-pull-request@v7
26+
with:
27+
commit-message: "Sync skills from render-oss/skills"
28+
title: "Sync skills from render-oss/skills"
29+
body: |
30+
Automated sync of skill files from [render-oss/skills](https://github.com/render-oss/skills).
31+
32+
This PR was created by the `sync-skills` workflow. Review the changes and merge when ready.
33+
branch: sync-skills
34+
labels: skills-sync
35+
delete-branch: true

.mcp.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"mcp_servers": {
3+
"render": {
4+
"url": "https://mcp.render.com/mcp",
5+
"bearer_token_env_var": "RENDER_API_KEY",
6+
"enabled": true
7+
}
8+
}
9+
}

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Render
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# Render Codex Plugin
2+
3+
Deploy, debug, monitor, and troubleshoot applications on [Render](https://render.com) from Codex. Start with the Render CLI for the core workflows. Add MCP later for advanced workflows.
4+
5+
## What it includes
6+
7+
- `skills/`: Render skills derived from [render-oss/skills](https://github.com/render-oss/skills)
8+
- `hooks/hooks.json`: `render.yaml` validation hook configuration
9+
- `scripts/validate-render-yaml.sh`: hook script that runs `render blueprints validate`
10+
- `scripts/sync-skills.sh`: manual skill sync script
11+
- `.mcp.json`: Render MCP server configuration using `RENDER_API_KEY`
12+
- `.codex-plugin/plugin.json`: Codex plugin manifest
13+
- `.github/workflows/sync-skills.yml`: daily skill sync workflow
14+
- `assets/logo.svg`: plugin logo
15+
16+
## Reused from the Cursor plugin
17+
18+
This repository intentionally reuses content from the existing local Cursor Render plugin where the formats align cleanly:
19+
20+
- skills
21+
- MCP configuration
22+
- hook configuration
23+
- validation script
24+
- logo asset
25+
26+
Cursor-specific concepts such as Cursor commands, rules, and agents are not included here because they do not map directly to Codex plugin packaging.
27+
28+
## Use it locally in Codex
29+
30+
This repository is the source of truth for the plugin. For local Codex use, install the plugin into the standard local plugin path at `~/plugins/render` and register it in `~/.agents/plugins/marketplace.json`.
31+
32+
To refresh the local plugin after you edit this repository, run:
33+
34+
```bash
35+
rsync -a ./ ~/plugins/render/
36+
```
37+
38+
## Get started with the Render CLI
39+
40+
The plugin is useful without MCP. Start with the Render CLI for Blueprint generation, `render.yaml` validation, workflow setup, logs, deploy status, and CLI-guided troubleshooting.
41+
42+
1. Install the Render CLI:
43+
44+
```bash
45+
brew install render
46+
```
47+
48+
2. Authenticate the CLI:
49+
50+
```bash
51+
render login
52+
```
53+
54+
3. Verify the CLI is ready:
55+
56+
```bash
57+
render whoami -o json
58+
```
59+
60+
If `render whoami -o json` fails, do not assume the CLI is usable yet. Fix authentication first.
61+
62+
If you previously set `RENDER_API_KEY` in your shell profile, make sure it is a real key or unset it. A placeholder value can break CLI auth in misleading ways.
63+
64+
4. Start using the plugin from Codex.
65+
66+
Good first prompts:
67+
68+
- `Help me install and authenticate the Render CLI for Render.`
69+
- `Validate my render.yaml for Render.`
70+
- `Debug my Render deployment with the Render CLI.`
71+
72+
## Add MCP for advanced workflows
73+
74+
The bundled MCP server is optional. Add it if you want direct service creation, structured service enumeration, richer monitoring, or structured database queries.
75+
76+
The plugin does not provide an API key input in the Codex plugin UI. Codex reads the bearer token for the bundled MCP server from the environment that launches Codex.
77+
78+
To enable MCP:
79+
80+
1. Create a Render API key in the [Render Dashboard](https://dashboard.render.com/u/*/settings#api-keys).
81+
2. Quit Codex if it is already open.
82+
3. Launch Codex from Terminal with the key set:
83+
84+
```bash
85+
export RENDER_API_KEY="rnd_..."
86+
open -a Codex
87+
```
88+
89+
4. Keep using that Terminal-launched Codex session. If you reopen Codex later from the Dock or Spotlight, it might not inherit `RENDER_API_KEY`.
90+
5. If you want this to persist for future launches, add the export line to your shell profile such as `~/.zshrc`, then launch Codex from a new Terminal session.
91+
92+
Never save a placeholder like `your_render_api_key` as the value of `RENDER_API_KEY`. A bad value is worse than an unset variable because it can make auth failures look unrelated.
93+
94+
The bundled MCP server is configured in `.mcp.json` and reads `RENDER_API_KEY` through `bearer_token_env_var`.
95+
96+
After the plugin is installed, you can also ask Codex: `Help me set up Render MCP in Codex for advanced workflows.`
97+
98+
## Keep skills up to date
99+
100+
Run the manual sync script to refresh `skills/` from [render-oss/skills](https://github.com/render-oss/skills):
101+
102+
```bash
103+
./scripts/sync-skills.sh
104+
```
105+
106+
GitHub Actions also runs `.github/workflows/sync-skills.yml` every day and opens a pull request when upstream skills change.
107+
108+
## Publish it
109+
110+
Push this repository to GitHub and publish it as the plugin source repository. The plugin payload lives at the repository root, not under a nested `plugins/` directory.
111+
112+
## License
113+
114+
MIT. See [LICENSE](LICENSE).

assets/logo.svg

Lines changed: 26 additions & 0 deletions
Loading

hooks/hooks.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"hooks": {
3+
"afterFileEdit": [
4+
{
5+
"command": "./scripts/validate-render-yaml.sh",
6+
"matcher": "render.yaml"
7+
}
8+
]
9+
}
10+
}

scripts/sync-skills.sh

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
REPO_URL="https://github.com/render-oss/skills"
5+
SKILLS_SUBDIR="skills"
6+
PLUGIN_SKILLS_DIR="skills"
7+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
8+
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
9+
10+
while [[ $# -gt 0 ]]; do
11+
case "$1" in
12+
--repo)
13+
REPO_URL="$2"
14+
shift 2
15+
;;
16+
--subdir)
17+
SKILLS_SUBDIR="$2"
18+
shift 2
19+
;;
20+
*)
21+
echo "Unknown option: $1" >&2
22+
exit 1
23+
;;
24+
esac
25+
done
26+
27+
TMPDIR="$(mktemp -d)"
28+
trap 'rm -rf "$TMPDIR"' EXIT
29+
30+
echo "Cloning $REPO_URL ..."
31+
git clone --depth 1 --quiet "$REPO_URL" "$TMPDIR/skills-source"
32+
33+
SOURCE_DIR="$TMPDIR/skills-source/$SKILLS_SUBDIR"
34+
TARGET_DIR="$REPO_ROOT/$PLUGIN_SKILLS_DIR"
35+
36+
if [[ ! -d "$SOURCE_DIR" ]]; then
37+
echo "Skills subdirectory '$SKILLS_SUBDIR' not found in $REPO_URL." >&2
38+
exit 1
39+
fi
40+
41+
SKILLS=()
42+
for dir in "$SOURCE_DIR"/*/; do
43+
if [[ -f "$dir/SKILL.md" ]]; then
44+
SKILLS+=("$(basename "$dir")")
45+
fi
46+
done
47+
48+
if [[ ${#SKILLS[@]} -eq 0 ]]; then
49+
echo "No skills found in $REPO_URL (no directories with SKILL.md)." >&2
50+
exit 1
51+
fi
52+
53+
echo "Found ${#SKILLS[@]} skills: ${SKILLS[*]}"
54+
55+
rm -rf "$TARGET_DIR"
56+
mkdir -p "$TARGET_DIR"
57+
58+
for skill in "${SKILLS[@]}"; do
59+
cp -R "$SOURCE_DIR/$skill" "$TARGET_DIR/$skill"
60+
file_count="$(find "$TARGET_DIR/$skill" -type f | wc -l | tr -d ' ')"
61+
echo " $skill ($file_count files)"
62+
done
63+
64+
echo ""
65+
echo "Synced ${#SKILLS[@]} skills into $PLUGIN_SKILLS_DIR/"

scripts/validate-render-yaml.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
if ! command -v render &>/dev/null; then
5+
echo "[render plugin] Render CLI not found. Install it to validate render.yaml:"
6+
echo " macOS: brew install render"
7+
echo " Linux: curl -fsSL https://raw.githubusercontent.com/render-oss/cli/main/bin/install.sh | sh"
8+
exit 0
9+
fi
10+
11+
render blueprints validate

0 commit comments

Comments
 (0)