@biggora/claude-plugins 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +3 -1
- package/README.md +13 -13
- package/codex-cli-workspace/iteration-1/benchmark.json +122 -0
- package/codex-cli-workspace/iteration-1/eval-1-ci-integration/eval_metadata.json +13 -0
- package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/grading.json +52 -0
- package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/outputs/response.md +163 -0
- package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/timing.json +5 -0
- package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/grading.json +58 -0
- package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/outputs/response.md +151 -0
- package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/timing.json +5 -0
- package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +13 -0
- package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +52 -0
- package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +86 -0
- package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +5 -0
- package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +58 -0
- package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +164 -0
- package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +5 -0
- package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/eval_metadata.json +13 -0
- package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/grading.json +52 -0
- package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/outputs/response.md +130 -0
- package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/timing.json +5 -0
- package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/grading.json +64 -0
- package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/outputs/response.md +209 -0
- package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/timing.json +5 -0
- package/codex-cli-workspace/iteration-1/review.html +1325 -0
- package/gemini-cli-workspace/iteration-1/benchmark.json +86 -0
- package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/eval_metadata.json +37 -0
- package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/grading.json +37 -0
- package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/outputs/response.md +401 -0
- package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/grading.json +37 -0
- package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/outputs/response.md +405 -0
- package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +37 -0
- package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +37 -0
- package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +212 -0
- package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +37 -0
- package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +427 -0
- package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/eval_metadata.json +32 -0
- package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/grading.json +32 -0
- package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/outputs/response.md +171 -0
- package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/grading.json +32 -0
- package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/outputs/response.md +199 -0
- package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-1/review.html +1325 -0
- package/gemini-cli-workspace/iteration-2/benchmark.json +173 -0
- package/gemini-cli-workspace/iteration-2/benchmark.md +28 -0
- package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/eval_metadata.json +37 -0
- package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/grading.json +37 -0
- package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/outputs/response.md +195 -0
- package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/grading.json +37 -0
- package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/outputs/response.md +377 -0
- package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/eval_metadata.json +37 -0
- package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/grading.json +37 -0
- package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/outputs/response.md +127 -0
- package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/grading.json +37 -0
- package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/outputs/response.md +164 -0
- package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/eval_metadata.json +32 -0
- package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/grading.json +32 -0
- package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/outputs/response.md +91 -0
- package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/grading.json +32 -0
- package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/outputs/response.md +112 -0
- package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/timing.json +5 -0
- package/gemini-cli-workspace/iteration-2/eval-viewer.html +1325 -0
- package/package.json +1 -1
- package/screen-recording-workspace/evals.json +41 -0
- package/screen-recording-workspace/iteration-1/benchmark.json +102 -0
- package/screen-recording-workspace/iteration-1/eval-0-fullscreen/eval_metadata.json +31 -0
- package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/grading.json +11 -0
- package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/outputs/demo.mp4 +0 -0
- package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/timing.json +5 -0
- package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/grading.json +11 -0
- package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/outputs/demo.mp4 +0 -0
- package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/timing.json +5 -0
- package/screen-recording-workspace/iteration-1/eval-1-region-audio/eval_metadata.json +31 -0
- package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/grading.json +11 -0
- package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/outputs/region_capture.mp4 +0 -0
- package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/timing.json +5 -0
- package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/grading.json +11 -0
- package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/outputs/region_capture.mp4 +0 -0
- package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/timing.json +5 -0
- package/screen-recording-workspace/iteration-1/eval-2-python-fallback/eval_metadata.json +31 -0
- package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/grading.json +11 -0
- package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/outputs/fallback_recording.mp4 +0 -0
- package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/timing.json +5 -0
- package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/grading.json +11 -0
- package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/fallback_recording.mp4 +0 -0
- package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/record_screen.py +67 -0
- package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/timing.json +5 -0
- package/screen-recording-workspace/iteration-1/review.html +1325 -0
- package/src/skills/codex-cli/SKILL.md +21 -11
- package/src/skills/codex-cli/evals/evals.json +47 -0
- package/src/skills/gemini-cli/SKILL.md +27 -13
- package/src/skills/gemini-cli/evals/evals.json +46 -0
- package/src/skills/gemini-cli/references/commands.md +21 -14
- package/src/skills/gemini-cli/references/configuration.md +23 -18
- package/src/skills/gemini-cli/references/headless-and-scripting.md +7 -17
- package/src/skills/gemini-cli/references/mcp-and-extensions.md +12 -6
- package/src/skills/notebook-lm/SKILL.md +1 -1
- package/src/skills/screen-recording/SKILL.md +243 -213
- package/src/skills/screen-recording/references/design-patterns.md +4 -2
- package/src/skills/screen-recording/references/ffmpeg-recording.md +473 -0
- package/src/skills/screen-recording/references/{approach1-programmatic.md → programmatic-generation.md} +45 -22
- package/src/skills/screen-recording/references/python-fallback.md +222 -0
- package/src/skills/tm-search/SKILL.md +242 -106
- package/src/skills/tm-search/evals/evals.json +23 -0
- package/src/skills/tm-search/references/scraping-fallback.md +60 -95
- package/src/skills/tm-search/scripts/tm_search.py +453 -375
- package/src/skills/screen-recording/references/approach2-xvfb.md +0 -232
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
"WebFetch(domain:commafeed.hm.neutron.lv)",
|
|
8
8
|
"WebFetch(domain:raw.githubusercontent.com)",
|
|
9
9
|
"Bash(done)",
|
|
10
|
-
"Bash(npm --version)"
|
|
10
|
+
"Bash(npm --version)",
|
|
11
|
+
"Bash(python \"C:/Users/biggora/.claude/plugins/cache/anthropic-agent-skills/document-skills/b0cbd3df1533/skills/skill-creator/eval-viewer/generate_review.py\" \"codex-cli-workspace/iteration-1\" --skill-name \"codex-cli\" --benchmark \"codex-cli-workspace/iteration-1/benchmark.json\" --static \"codex-cli-workspace/iteration-1/review.html\")",
|
|
12
|
+
"Bash(start \"\" \"E:/Projects/npm/claude-plugins/claude-plugins/codex-cli-workspace/iteration-1/review.html\")"
|
|
11
13
|
]
|
|
12
14
|
}
|
|
13
15
|
}
|
package/README.md
CHANGED
|
@@ -70,19 +70,19 @@ claude-plugins skills remove commafeed-api
|
|
|
70
70
|
#### Install Examples
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
74
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
75
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
76
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
77
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
78
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
79
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
80
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
81
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
82
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
83
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
84
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
85
|
-
npx skills add https://github.com/biggora/claude-plugins-registry --skill
|
|
73
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill codex-cli
|
|
74
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill gemini-cli
|
|
75
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill n8n-api
|
|
76
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill notebook-lm
|
|
77
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill commafeed-api
|
|
78
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill tm-search
|
|
79
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill wp-rest-api
|
|
80
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill youtube-search
|
|
81
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill youtube-thumbnail
|
|
82
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill screen-recording
|
|
83
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill text-to-speech
|
|
84
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill test-web-ui
|
|
85
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill test-mobile-app
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
## Plugins
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"skill_name": "codex-cli",
|
|
4
|
+
"skill_path": "src/skills/codex-cli/SKILL.md",
|
|
5
|
+
"executor_model": "claude-opus-4-6",
|
|
6
|
+
"timestamp": "2026-03-11T00:00:00Z",
|
|
7
|
+
"evals_run": 3,
|
|
8
|
+
"runs_per_configuration": 1
|
|
9
|
+
},
|
|
10
|
+
"runs": [
|
|
11
|
+
{
|
|
12
|
+
"eval_id": 1,
|
|
13
|
+
"eval_name": "ci-integration",
|
|
14
|
+
"configuration": "with_skill",
|
|
15
|
+
"result": {
|
|
16
|
+
"pass_rate": 1.0,
|
|
17
|
+
"passed": 6,
|
|
18
|
+
"failed": 0,
|
|
19
|
+
"total": 6
|
|
20
|
+
},
|
|
21
|
+
"timing": {
|
|
22
|
+
"total_tokens": 68449,
|
|
23
|
+
"duration_ms": 60126
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"eval_id": 1,
|
|
28
|
+
"eval_name": "ci-integration",
|
|
29
|
+
"configuration": "without_skill",
|
|
30
|
+
"result": {
|
|
31
|
+
"pass_rate": 0.5,
|
|
32
|
+
"passed": 3,
|
|
33
|
+
"failed": 3,
|
|
34
|
+
"total": 6
|
|
35
|
+
},
|
|
36
|
+
"timing": {
|
|
37
|
+
"total_tokens": 64960,
|
|
38
|
+
"duration_ms": 44585
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"eval_id": 2,
|
|
43
|
+
"eval_name": "mcp-server-config",
|
|
44
|
+
"configuration": "with_skill",
|
|
45
|
+
"result": {
|
|
46
|
+
"pass_rate": 1.0,
|
|
47
|
+
"passed": 6,
|
|
48
|
+
"failed": 0,
|
|
49
|
+
"total": 6
|
|
50
|
+
},
|
|
51
|
+
"timing": {
|
|
52
|
+
"total_tokens": 67753,
|
|
53
|
+
"duration_ms": 38647
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"eval_id": 2,
|
|
58
|
+
"eval_name": "mcp-server-config",
|
|
59
|
+
"configuration": "without_skill",
|
|
60
|
+
"result": {
|
|
61
|
+
"pass_rate": 0.167,
|
|
62
|
+
"passed": 1,
|
|
63
|
+
"failed": 5,
|
|
64
|
+
"total": 6
|
|
65
|
+
},
|
|
66
|
+
"timing": {
|
|
67
|
+
"total_tokens": 64950,
|
|
68
|
+
"duration_ms": 41699
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"eval_id": 3,
|
|
73
|
+
"eval_name": "profiles-troubleshooting",
|
|
74
|
+
"configuration": "with_skill",
|
|
75
|
+
"result": {
|
|
76
|
+
"pass_rate": 1.0,
|
|
77
|
+
"passed": 6,
|
|
78
|
+
"failed": 0,
|
|
79
|
+
"total": 6
|
|
80
|
+
},
|
|
81
|
+
"timing": {
|
|
82
|
+
"total_tokens": 67804,
|
|
83
|
+
"duration_ms": 38914
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"eval_id": 3,
|
|
88
|
+
"eval_name": "profiles-troubleshooting",
|
|
89
|
+
"configuration": "without_skill",
|
|
90
|
+
"result": {
|
|
91
|
+
"pass_rate": 0.167,
|
|
92
|
+
"passed": 1,
|
|
93
|
+
"failed": 5,
|
|
94
|
+
"total": 6
|
|
95
|
+
},
|
|
96
|
+
"timing": {
|
|
97
|
+
"total_tokens": 65148,
|
|
98
|
+
"duration_ms": 51576
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"run_summary": {
|
|
103
|
+
"with_skill": {
|
|
104
|
+
"mean_pass_rate": 1.0,
|
|
105
|
+
"stddev_pass_rate": 0.0,
|
|
106
|
+
"mean_tokens": 68002,
|
|
107
|
+
"mean_duration_ms": 45896
|
|
108
|
+
},
|
|
109
|
+
"without_skill": {
|
|
110
|
+
"mean_pass_rate": 0.278,
|
|
111
|
+
"stddev_pass_rate": 0.192,
|
|
112
|
+
"mean_tokens": 65019,
|
|
113
|
+
"mean_duration_ms": 45953
|
|
114
|
+
},
|
|
115
|
+
"delta": {
|
|
116
|
+
"pass_rate": "+72.2%",
|
|
117
|
+
"tokens": "+4.6%",
|
|
118
|
+
"duration": "-0.1%"
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"notes": "The skill achieves 100% pass rate across all 3 evals vs 27.8% baseline. Without the skill, Claude heavily hallucinated CLI flags (--approval-mode, --sandbox write-only, --no-sandbox, --mcp-server), config format (JSON instead of TOML), config keys (approval_mode instead of approval_policy), and approval mode values (suggest/auto-edit/full-auto instead of untrusted/on-request/never/reject). The skill completely eliminates these hallucinations at negligible additional token cost."
|
|
122
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 1,
|
|
3
|
+
"eval_name": "ci-integration",
|
|
4
|
+
"prompt": "I want to set up OpenAI Codex CLI in my GitHub Actions pipeline to auto-fix lint errors on PRs. How do I configure it with full-auto mode and workspace-write sandbox? My OPENAI_API_KEY is stored in GitHub secrets.",
|
|
5
|
+
"assertions": [
|
|
6
|
+
{"id": "installs-globally", "text": "Shows npm install -g @openai/codex for global installation"},
|
|
7
|
+
{"id": "uses-exec-mode", "text": "Uses 'codex exec' for non-interactive CI mode (not bare 'codex')"},
|
|
8
|
+
{"id": "full-auto-flag", "text": "Uses --full-auto flag and correctly explains it equals -a on-request -s workspace-write"},
|
|
9
|
+
{"id": "api-key-from-secrets", "text": "Shows OPENAI_API_KEY set from ${{ secrets.OPENAI_API_KEY }} in env"},
|
|
10
|
+
{"id": "provides-workflow-yaml", "text": "Provides a complete GitHub Actions workflow YAML snippet"},
|
|
11
|
+
{"id": "no-hallucinated-flags", "text": "Does not invent non-existent CLI flags or options"}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"expectations": [
|
|
3
|
+
{
|
|
4
|
+
"text": "Shows npm install -g @openai/codex for global installation",
|
|
5
|
+
"passed": true,
|
|
6
|
+
"evidence": "Line 44: 'run: npm install -g @openai/codex'"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"text": "Uses 'codex exec' for non-interactive CI mode (not bare 'codex')",
|
|
10
|
+
"passed": true,
|
|
11
|
+
"evidence": "Line 53: 'codex exec \\' used in the workflow step"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"text": "Uses --full-auto flag and correctly explains it equals -a on-request -s workspace-write",
|
|
15
|
+
"passed": true,
|
|
16
|
+
"evidence": "Line 54: '--full-auto' and line 80-83: 'The --full-auto flag is a convenience shortcut equivalent to: codex exec -a on-request -s workspace-write'"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"text": "Shows OPENAI_API_KEY set from ${{ secrets.OPENAI_API_KEY }} in env",
|
|
20
|
+
"passed": true,
|
|
21
|
+
"evidence": "Line 58: 'OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}'"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"text": "Provides a complete GitHub Actions workflow YAML snippet",
|
|
25
|
+
"passed": true,
|
|
26
|
+
"evidence": "Lines 14-67: Complete workflow with checkout, node setup, install, lint, codex exec, and commit/push steps"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"text": "Does not invent non-existent CLI flags or options",
|
|
30
|
+
"passed": true,
|
|
31
|
+
"evidence": "All flags used (--full-auto, -a never, -s workspace-write, -c, --model, --profile, --dangerously-bypass-approvals-and-sandbox) match the skill documentation"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"summary": {
|
|
35
|
+
"passed": 6,
|
|
36
|
+
"failed": 0,
|
|
37
|
+
"total": 6,
|
|
38
|
+
"pass_rate": 1.0
|
|
39
|
+
},
|
|
40
|
+
"claims": [
|
|
41
|
+
{
|
|
42
|
+
"claim": "--full-auto equals -a on-request -s workspace-write",
|
|
43
|
+
"type": "factual",
|
|
44
|
+
"verified": true,
|
|
45
|
+
"evidence": "Matches skill doc line 64: '# Equivalent to: -a on-request -s workspace-write'"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"eval_feedback": {
|
|
49
|
+
"suggestions": [],
|
|
50
|
+
"overall": "No suggestions, evals look solid"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Setting Up OpenAI Codex CLI in GitHub Actions to Auto-Fix Lint Errors
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
You can use `codex exec` (the non-interactive mode of Codex CLI) inside a GitHub Actions workflow to automatically fix lint errors on pull requests. The key pieces are:
|
|
6
|
+
|
|
7
|
+
- **`--full-auto` flag** -- shortcut for `-a on-request -s workspace-write`, which allows Codex to write files within the working directory without requiring interactive approval.
|
|
8
|
+
- **`OPENAI_API_KEY`** -- passed from GitHub Secrets via the `env` block.
|
|
9
|
+
|
|
10
|
+
## Workflow File
|
|
11
|
+
|
|
12
|
+
Create `.github/workflows/codex-lint-fix.yml` in your repository:
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
name: Auto-fix lint errors with Codex CLI
|
|
16
|
+
|
|
17
|
+
on:
|
|
18
|
+
pull_request:
|
|
19
|
+
types: [opened, synchronize]
|
|
20
|
+
|
|
21
|
+
permissions:
|
|
22
|
+
contents: write
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
lint-fix:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
steps:
|
|
28
|
+
- name: Checkout PR branch
|
|
29
|
+
uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
ref: ${{ github.head_ref }}
|
|
32
|
+
# Needed so the push step can write back to the PR branch
|
|
33
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
34
|
+
|
|
35
|
+
- name: Set up Node.js
|
|
36
|
+
uses: actions/setup-node@v4
|
|
37
|
+
with:
|
|
38
|
+
node-version: '20'
|
|
39
|
+
|
|
40
|
+
- name: Install dependencies
|
|
41
|
+
run: npm ci
|
|
42
|
+
|
|
43
|
+
- name: Install Codex CLI
|
|
44
|
+
run: npm install -g @openai/codex
|
|
45
|
+
|
|
46
|
+
- name: Run linter and capture errors
|
|
47
|
+
id: lint
|
|
48
|
+
run: |
|
|
49
|
+
npm run lint 2>&1 | tee lint-output.txt || true
|
|
50
|
+
|
|
51
|
+
- name: Auto-fix lint errors with Codex
|
|
52
|
+
run: |
|
|
53
|
+
codex exec \
|
|
54
|
+
--full-auto \
|
|
55
|
+
--model gpt-5-codex \
|
|
56
|
+
"Read lint-output.txt for the lint errors in this project. Fix all the lint errors in the source files. Do not modify any test files unless the lint error is in a test file."
|
|
57
|
+
env:
|
|
58
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
59
|
+
|
|
60
|
+
- name: Commit and push fixes
|
|
61
|
+
run: |
|
|
62
|
+
git config user.name "codex-bot"
|
|
63
|
+
git config user.email "codex-bot@users.noreply.github.com"
|
|
64
|
+
git add -A
|
|
65
|
+
git diff --cached --quiet || git commit -m "fix: auto-fix lint errors via Codex CLI"
|
|
66
|
+
git push
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## How It Works
|
|
70
|
+
|
|
71
|
+
1. **Checkout** -- The PR branch is checked out with write access so fixes can be pushed back.
|
|
72
|
+
2. **Lint** -- Your existing lint command runs and its output is captured to a file. The `|| true` prevents the step from failing the workflow (lint errors are expected).
|
|
73
|
+
3. **Codex exec** -- Runs in non-interactive mode with `--full-auto`, which sets:
|
|
74
|
+
- **Approval policy**: `on-request` (Codex proceeds without interactive prompts for standard file edits)
|
|
75
|
+
- **Sandbox**: `workspace-write` (Codex can only write files within the checked-out repository directory)
|
|
76
|
+
4. **Commit and push** -- If Codex made any changes, they are committed and pushed to the PR branch.
|
|
77
|
+
|
|
78
|
+
## Understanding `--full-auto`
|
|
79
|
+
|
|
80
|
+
The `--full-auto` flag is a convenience shortcut equivalent to:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
codex exec -a on-request -s workspace-write "task"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
| Setting | Value | Meaning |
|
|
87
|
+
|---------|-------|---------|
|
|
88
|
+
| Approval policy (`-a`) | `on-request` | Codex runs autonomously for standard operations; only pauses on sensitive actions |
|
|
89
|
+
| Sandbox (`-s`) | `workspace-write` | Codex can read/write files in the working directory but cannot access the broader filesystem |
|
|
90
|
+
|
|
91
|
+
This is the recommended combination for CI pipelines because it gives Codex enough freedom to edit source files while preventing it from modifying anything outside the project.
|
|
92
|
+
|
|
93
|
+
### If You Want Fully Unattended Execution
|
|
94
|
+
|
|
95
|
+
If you want Codex to never pause for any reason (no approval prompts at all), use explicit flags instead of `--full-auto`:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
codex exec -a never -s workspace-write "Fix all lint errors"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The `-a never` policy means Codex will never ask for approval, even for potentially sensitive actions. Use this when you are confident in the prompt and the sandbox constraint is sufficient protection.
|
|
102
|
+
|
|
103
|
+
## Configuring the API Key
|
|
104
|
+
|
|
105
|
+
Your `OPENAI_API_KEY` stored in GitHub Secrets is passed to Codex through the `env` block on the step:
|
|
106
|
+
|
|
107
|
+
```yaml
|
|
108
|
+
env:
|
|
109
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
To add the secret:
|
|
113
|
+
1. Go to your repository on GitHub.
|
|
114
|
+
2. Navigate to **Settings > Secrets and variables > Actions**.
|
|
115
|
+
3. Click **New repository secret**.
|
|
116
|
+
4. Name: `OPENAI_API_KEY`, Value: your OpenAI API key.
|
|
117
|
+
|
|
118
|
+
## Optional: Enable Network Access
|
|
119
|
+
|
|
120
|
+
By default, the `workspace-write` sandbox disables network access. If your lint fix workflow requires installing packages or fetching resources, enable network with a config override:
|
|
121
|
+
|
|
122
|
+
```yaml
|
|
123
|
+
- name: Auto-fix lint errors with Codex
|
|
124
|
+
run: |
|
|
125
|
+
codex exec \
|
|
126
|
+
--full-auto \
|
|
127
|
+
-c 'sandbox_workspace_write.network_access=true' \
|
|
128
|
+
"Fix all lint errors found in lint-output.txt"
|
|
129
|
+
env:
|
|
130
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Optional: Use a Config Profile
|
|
134
|
+
|
|
135
|
+
Instead of passing all flags on the command line, you can create a `.codex/config.toml` in your repo with a CI profile:
|
|
136
|
+
|
|
137
|
+
```toml
|
|
138
|
+
[profiles.ci]
|
|
139
|
+
model = "gpt-5-codex"
|
|
140
|
+
approval_policy = "never"
|
|
141
|
+
|
|
142
|
+
[profiles.ci.sandbox_workspace_write]
|
|
143
|
+
network_access = false
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Then reference it in the workflow:
|
|
147
|
+
|
|
148
|
+
```yaml
|
|
149
|
+
- name: Auto-fix lint errors with Codex
|
|
150
|
+
run: |
|
|
151
|
+
codex exec --profile ci "Fix all lint errors found in lint-output.txt"
|
|
152
|
+
env:
|
|
153
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Troubleshooting
|
|
157
|
+
|
|
158
|
+
| Problem | Solution |
|
|
159
|
+
|---------|----------|
|
|
160
|
+
| Landlock sandbox error on Ubuntu runner | Update the runner image or, in isolated CI only, use `--dangerously-bypass-approvals-and-sandbox` |
|
|
161
|
+
| Network access denied during fix | Add `-c 'sandbox_workspace_write.network_access=true'` |
|
|
162
|
+
| Codex keeps prompting for approval | Make sure you are using `codex exec` (not bare `codex`), and pass `--full-auto` or `-a never` explicitly |
|
|
163
|
+
| Auth loop / browser auth attempt | Ensure `OPENAI_API_KEY` is set in the `env` block -- Codex uses it automatically and skips browser auth |
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"expectations": [
|
|
3
|
+
{
|
|
4
|
+
"text": "Shows npm install -g @openai/codex for global installation",
|
|
5
|
+
"passed": true,
|
|
6
|
+
"evidence": "Line 49: 'run: npm install -g @openai/codex'"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"text": "Uses 'codex exec' for non-interactive CI mode (not bare 'codex')",
|
|
10
|
+
"passed": false,
|
|
11
|
+
"evidence": "Line 66: Uses bare 'codex \\' instead of 'codex exec'. The exec subcommand is required for non-interactive CI mode."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"text": "Uses --full-auto flag and correctly explains it equals -a on-request -s workspace-write",
|
|
15
|
+
"passed": false,
|
|
16
|
+
"evidence": "Uses hallucinated '--approval-mode full-auto' flag (correct is --full-auto or --ask-for-approval/-a) and '--sandbox write-only' (correct is -s workspace-write). Also incorrectly describes approval modes as 'suggest', 'auto-edit', 'full-auto' instead of the real ones: 'untrusted', 'on-request', 'never', 'reject'."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"text": "Shows OPENAI_API_KEY set from ${{ secrets.OPENAI_API_KEY }} in env",
|
|
20
|
+
"passed": true,
|
|
21
|
+
"evidence": "Line 64: 'OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}'"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"text": "Provides a complete GitHub Actions workflow YAML snippet",
|
|
25
|
+
"passed": true,
|
|
26
|
+
"evidence": "Lines 16-79: Complete workflow YAML with checkout, node, install, lint, codex, and commit steps"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"text": "Does not invent non-existent CLI flags or options",
|
|
30
|
+
"passed": false,
|
|
31
|
+
"evidence": "Hallucinated flags: '--approval-mode full-auto' (not a real flag), '--sandbox write-only' (not a real flag), '--model o3'. Hallucinated modes: 'suggest', 'auto-edit'. Hallucinated config format: 'codex.json'/'config.json' instead of config.toml."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"summary": {
|
|
35
|
+
"passed": 3,
|
|
36
|
+
"failed": 3,
|
|
37
|
+
"total": 6,
|
|
38
|
+
"pass_rate": 0.5
|
|
39
|
+
},
|
|
40
|
+
"claims": [
|
|
41
|
+
{
|
|
42
|
+
"claim": "Approval modes are suggest, auto-edit, full-auto",
|
|
43
|
+
"type": "factual",
|
|
44
|
+
"verified": false,
|
|
45
|
+
"evidence": "Real approval modes are: untrusted, on-request, never, reject"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"claim": "Config file is codex.json or config.json",
|
|
49
|
+
"type": "factual",
|
|
50
|
+
"verified": false,
|
|
51
|
+
"evidence": "Real config file is ~/.codex/config.toml (TOML format, not JSON)"
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"eval_feedback": {
|
|
55
|
+
"suggestions": [],
|
|
56
|
+
"overall": "Baseline shows significant hallucination of CLI flags and config format without the skill"
|
|
57
|
+
}
|
|
58
|
+
}
|
package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/outputs/response.md
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Setting Up OpenAI Codex CLI in GitHub Actions for Auto-Fixing Lint Errors
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
OpenAI Codex CLI is a terminal-based AI coding agent. You can integrate it into a GitHub Actions workflow to automatically fix lint errors on pull requests using its `full-auto` approval mode and `write-only` sandbox policy.
|
|
6
|
+
|
|
7
|
+
## Key Concepts
|
|
8
|
+
|
|
9
|
+
- **`full-auto` mode**: Codex CLI automatically approves all actions (file reads, writes, and command execution) without human confirmation. Set via `--approval-mode full-auto`.
|
|
10
|
+
- **`write-only` sandbox** (also called `workspace-write`): Restricts file writes to the current working directory (the repo workspace). Network access and writes outside the workspace are blocked. Set via `--sandbox write-only`.
|
|
11
|
+
|
|
12
|
+
## GitHub Actions Workflow
|
|
13
|
+
|
|
14
|
+
Create `.github/workflows/codex-lint-fix.yml`:
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
name: Codex Auto-Fix Lint Errors
|
|
18
|
+
|
|
19
|
+
on:
|
|
20
|
+
pull_request:
|
|
21
|
+
types: [opened, synchronize]
|
|
22
|
+
|
|
23
|
+
permissions:
|
|
24
|
+
contents: write
|
|
25
|
+
pull-requests: write
|
|
26
|
+
|
|
27
|
+
jobs:
|
|
28
|
+
lint-fix:
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
|
|
31
|
+
steps:
|
|
32
|
+
- name: Checkout PR branch
|
|
33
|
+
uses: actions/checkout@v4
|
|
34
|
+
with:
|
|
35
|
+
ref: ${{ github.head_ref }}
|
|
36
|
+
fetch-depth: 0
|
|
37
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
38
|
+
|
|
39
|
+
- name: Set up Node.js
|
|
40
|
+
uses: actions/setup-node@v4
|
|
41
|
+
with:
|
|
42
|
+
node-version: '20'
|
|
43
|
+
|
|
44
|
+
- name: Install dependencies
|
|
45
|
+
run: npm ci
|
|
46
|
+
|
|
47
|
+
- name: Install OpenAI Codex CLI
|
|
48
|
+
run: npm install -g @openai/codex
|
|
49
|
+
|
|
50
|
+
- name: Run linter and capture errors
|
|
51
|
+
id: lint
|
|
52
|
+
continue-on-error: true
|
|
53
|
+
run: |
|
|
54
|
+
npx eslint . --format json > lint-results.json 2>&1 || true
|
|
55
|
+
if [ -s lint-results.json ]; then
|
|
56
|
+
echo "has_errors=true" >> "$GITHUB_OUTPUT"
|
|
57
|
+
else
|
|
58
|
+
echo "has_errors=false" >> "$GITHUB_OUTPUT"
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
- name: Auto-fix lint errors with Codex CLI
|
|
62
|
+
if: steps.lint.outputs.has_errors == 'true'
|
|
63
|
+
env:
|
|
64
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
65
|
+
run: |
|
|
66
|
+
codex \
|
|
67
|
+
--approval-mode full-auto \
|
|
68
|
+
--sandbox write-only \
|
|
69
|
+
"Read the lint errors in lint-results.json and fix all the reported ESLint errors and warnings in the source files. Do not change any logic, only fix lint issues."
|
|
70
|
+
|
|
71
|
+
- name: Commit and push fixes
|
|
72
|
+
run: |
|
|
73
|
+
git config user.name "github-actions[bot]"
|
|
74
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
75
|
+
git add -A
|
|
76
|
+
git diff --cached --quiet && echo "No changes to commit" && exit 0
|
|
77
|
+
git commit -m "fix: auto-fix lint errors via Codex CLI"
|
|
78
|
+
git push
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Configuration Breakdown
|
|
82
|
+
|
|
83
|
+
### Authentication
|
|
84
|
+
|
|
85
|
+
The `OPENAI_API_KEY` secret must be configured in your repository:
|
|
86
|
+
|
|
87
|
+
1. Go to your repo on GitHub.
|
|
88
|
+
2. Navigate to **Settings > Secrets and variables > Actions**.
|
|
89
|
+
3. Click **New repository secret**.
|
|
90
|
+
4. Name: `OPENAI_API_KEY`, Value: your OpenAI API key.
|
|
91
|
+
|
|
92
|
+
The workflow references it as `${{ secrets.OPENAI_API_KEY }}` and passes it to the Codex CLI step via the `env` block.
|
|
93
|
+
|
|
94
|
+
### Approval Mode
|
|
95
|
+
|
|
96
|
+
`--approval-mode full-auto` tells Codex CLI to execute all suggested changes without waiting for human approval. This is required in CI where there is no interactive terminal.
|
|
97
|
+
|
|
98
|
+
The three approval modes are:
|
|
99
|
+
- `suggest` (default) -- requires approval for everything
|
|
100
|
+
- `auto-edit` -- auto-approves file edits but asks before running commands
|
|
101
|
+
- `full-auto` -- auto-approves all actions including command execution
|
|
102
|
+
|
|
103
|
+
### Sandbox Policy
|
|
104
|
+
|
|
105
|
+
`--sandbox write-only` (workspace-write) restricts Codex to:
|
|
106
|
+
- Reading any file in the workspace
|
|
107
|
+
- Writing only to files within the current working directory
|
|
108
|
+
- No network access from spawned commands
|
|
109
|
+
- No writes outside the repo checkout directory
|
|
110
|
+
|
|
111
|
+
This provides a safety boundary so Codex cannot modify system files or exfiltrate data, even in `full-auto` mode.
|
|
112
|
+
|
|
113
|
+
### Alternative: Using a Codex Config File
|
|
114
|
+
|
|
115
|
+
Instead of passing flags on the command line, you can create a `codex.json` or use the `~/.codex/config.json` approach. In CI, you can write it inline:
|
|
116
|
+
|
|
117
|
+
```yaml
|
|
118
|
+
- name: Configure Codex CLI
|
|
119
|
+
run: |
|
|
120
|
+
mkdir -p ~/.codex
|
|
121
|
+
cat > ~/.codex/config.json << 'EOF'
|
|
122
|
+
{
|
|
123
|
+
"approvalMode": "full-auto",
|
|
124
|
+
"sandbox": "write-only",
|
|
125
|
+
"model": "o4-mini"
|
|
126
|
+
}
|
|
127
|
+
EOF
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Model Selection
|
|
131
|
+
|
|
132
|
+
By default, Codex CLI uses `o4-mini`. You can specify a different model:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
codex --model o3 --approval-mode full-auto --sandbox write-only "Fix lint errors..."
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Security Considerations
|
|
139
|
+
|
|
140
|
+
1. **Never hardcode your API key** in the workflow file. Always use GitHub Secrets.
|
|
141
|
+
2. **`write-only` sandbox** is recommended for CI to prevent unintended network calls or file access outside the workspace.
|
|
142
|
+
3. **Review the generated commits**. Even though Codex runs automatically, the changes are pushed to the PR branch where reviewers can inspect them.
|
|
143
|
+
4. **Limit permissions**. The workflow uses `contents: write` and `pull-requests: write` which are the minimum needed to push commits and interact with the PR.
|
|
144
|
+
5. **Cost control**. Each Codex invocation calls the OpenAI API. Consider adding conditions to skip the step if there are no lint errors, as shown in the workflow above.
|
|
145
|
+
|
|
146
|
+
## Troubleshooting
|
|
147
|
+
|
|
148
|
+
- **"codex: command not found"**: Make sure the install step uses `npm install -g @openai/codex` and that the Node.js version is 20 or higher.
|
|
149
|
+
- **Authentication errors**: Verify the `OPENAI_API_KEY` secret is set correctly and the key is valid.
|
|
150
|
+
- **Push failures**: Ensure the checkout step uses `token: ${{ secrets.GITHUB_TOKEN }}` and the workflow has `contents: write` permission.
|
|
151
|
+
- **No changes committed**: If Codex cannot fix certain lint errors, the `git diff --cached --quiet` check will skip the commit gracefully.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 2,
|
|
3
|
+
"eval_name": "mcp-server-config",
|
|
4
|
+
"prompt": "How do I add a custom MCP server to codex CLI? I have a Python-based MCP server that needs a GITHUB_TOKEN env var. Also want to run codex itself as an MCP server for other agents to consume.",
|
|
5
|
+
"assertions": [
|
|
6
|
+
{"id": "correct-config-location", "text": "Points to ~/.codex/config.toml for MCP server configuration"},
|
|
7
|
+
{"id": "mcp-servers-toml-syntax", "text": "Shows [mcp_servers.name] TOML section with command, args fields"},
|
|
8
|
+
{"id": "env-var-dollar-pattern", "text": "Shows $GITHUB_TOKEN or $ENV_VAR pattern for environment variable references"},
|
|
9
|
+
{"id": "codex-as-mcp-server", "text": "Shows 'codex mcp' command for running codex as an MCP server"},
|
|
10
|
+
{"id": "python-command-correct", "text": "Uses correct Python command (python/python3) in the MCP server command field"},
|
|
11
|
+
{"id": "no-hallucinated-config", "text": "Does not invent non-existent config keys or MCP server fields"}
|
|
12
|
+
]
|
|
13
|
+
}
|