ci: schedule live skills integration tests#1902
Conversation
Run make live-skills-test on a daily cron (plus workflow_dispatch). The live tests exercise the real npx skills CLI, whose dominant failure mode is upstream drift — a new release breaking output or flags without any commit here — so a schedule fits and a per-PR gate would only import live-network flakiness into unrelated changes. On failure the job keeps one open tracking issue current instead of failing silently: a scheduled job nobody hears about rots as quietly as no job at all. The workflow contract (schedule/dispatch-only triggers, pinned actions, no secrets) is pinned by scripts/live-skills-workflow.test.sh wired into make script-test.
📝 WalkthroughWalkthroughAdds a daily and manually triggered GitHub Actions workflow for live-skills integration tests, failure issue tracking, and a Bash validation script wired into ChangesLive skills integration
Estimated code review effort: 3 (Moderate) | ~20 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 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 |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
scripts/live-skills-workflow.test.sh (1)
14-27: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueImprove error visibility for silent assertions.
Because the script uses
set -e, these baregrepcommands act as silent assertions. If any check fails, the script will abort immediately with no output, making it difficult to debug which specific requirement was violated whenmake script-testfails.Consider enabling
set -xbefore these checks, or wrapping them in a helper function that prints a descriptive error message.🛠️ Proposed fix (enable execution tracing)
fi +set -x + grep -Eq '^[[:space:]]+workflow_dispatch:[[:space:]]*$' "$workflow" grep -Eq '^[[:space:]]+schedule:[[:space:]]*$' "$workflow" if grep -Eq '^[[:space:]]*(push|pull_request|pull_request_target|merge_group):|^[[:space:]]*on:[[:space:]]*\[[^]]*(push|pull_request|pull_request_target|merge_group)' "$workflow"; then echo "live skills workflow must only run on schedule or workflow_dispatch" >&2 + set +x exit 1 fi grep -Fq "permissions:" "$workflow" grep -Fq "contents: read" "$workflow" grep -Fq "persist-credentials: false" "$workflow" grep -Fq "timeout-minutes: 15" "$workflow" grep -Fq "runs-on: ubuntu-latest" "$workflow" grep -Fq "node-version: '22'" "$workflow" grep -Fq "make live-skills-test" "$workflow" + +set +x🤖 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 `@scripts/live-skills-workflow.test.sh` around lines 14 - 27, Update the assertion checks in the live-skills workflow test script so failures identify the specific requirement instead of exiting silently under set -e. Add descriptive failure output for each grep assertion, either by wrapping the checks in a helper or enabling tracing as suggested, while preserving all existing validation patterns and success behavior.
🤖 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 @.github/workflows/live-skills.yml:
- Around line 53-55: Fix the YAML block scalar in the workflow step containing
the --body message by indenting the continuation text lines to the same base
level required by the surrounding run: | block. Preserve the rendered blank line
and markdown content while ensuring every line remains valid YAML.
---
Nitpick comments:
In `@scripts/live-skills-workflow.test.sh`:
- Around line 14-27: Update the assertion checks in the live-skills workflow
test script so failures identify the specific requirement instead of exiting
silently under set -e. Add descriptive failure output for each grep assertion,
either by wrapping the checks in a helper or enabling tracing as suggested,
while preserving all existing validation patterns and success behavior.
🪄 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: 543b7f1e-ccf1-4600-a5fa-f761d1a57f73
📒 Files selected for processing (3)
.github/workflows/live-skills.ymlMakefilescripts/live-skills-workflow.test.sh
| --body "The scheduled live skills integration run failed: $run_url | ||
|
|
||
| The job runs \`make live-skills-test\` against the real \`npx skills\` CLI; a failure here usually means upstream drift in the skills CLI rather than a regression in this repo. Reproduce locally with \`make live-skills-test\`." |
There was a problem hiding this comment.
🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win
Fix YAML syntax error in block scalar.
Because this bash script is within a YAML block scalar (run: |), every line must be indented by at least the base indentation level of the block (10 spaces). Line 55 has no indentation, which causes a YAML parsing error (could not find expected ':') and will prevent the workflow from running.
Indenting the continuation lines will fix the syntax while still rendering correctly as markdown in the GitHub issue.
🐛 Proposed fix
gh issue create --repo "$GITHUB_REPOSITORY" --title "$title" \
--body "The scheduled live skills integration run failed: $run_url
-The job runs \`make live-skills-test\` against the real \`npx skills\` CLI; a failure here usually means upstream drift in the skills CLI rather than a regression in this repo. Reproduce locally with \`make live-skills-test\`."
+ The job runs \`make live-skills-test\` against the real \`npx skills\` CLI; a failure here usually means upstream drift in the skills CLI rather than a regression in this repo. Reproduce locally with \`make live-skills-test\`."
fi📝 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.
| --body "The scheduled live skills integration run failed: $run_url | |
| The job runs \`make live-skills-test\` against the real \`npx skills\` CLI; a failure here usually means upstream drift in the skills CLI rather than a regression in this repo. Reproduce locally with \`make live-skills-test\`." | |
| gh issue create --repo "$GITHUB_REPOSITORY" --title "$title" \ | |
| --body "The scheduled live skills integration run failed: $run_url | |
| The job runs \`make live-skills-test\` against the real \`npx skills\` CLI; a failure here usually means upstream drift in the skills CLI rather than a regression in this repo. Reproduce locally with \`make live-skills-test\`." | |
| fi |
🧰 Tools
🪛 actionlint (1.7.12)
[error] 55-55: could not parse as YAML: could not find expected ':'
(syntax-check)
🤖 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 @.github/workflows/live-skills.yml around lines 53 - 55, Fix the YAML block
scalar in the workflow step containing the --body message by indenting the
continuation text lines to the same base level required by the surrounding run:
| block. Preserve the rendered blank line and markdown content while ensuring
every line remains valid YAML.
Source: Linters/SAST tools
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1902 +/- ##
=======================================
Coverage 74.72% 74.72%
=======================================
Files 886 886
Lines 92621 92621
=======================================
Hits 69208 69208
Misses 18052 18052
Partials 5361 5361 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
🚀 PR Preview Install Guide🧰 CLI updatenpm i -g https://pkg.pr.new/larksuite/cli/@larksuite/cli@be011db6851906b08769285a1ef467b77ad09873🧩 Skill updatenpx skills add larksuite/cli#ci/schedule-live-skills-tests -y -g |
Summary
PR #1883 made the two live skills integration tests strictly opt-in (
make live-skills-test), which removed their accidental execution on developer machines — but also left them with no automated runs at all. Their dominant failure mode is upstream drift:npx -y skillsalways resolves the latest skills CLI release, so the integration can break without any commit in this repo. This PR restores the scheduled workflow (daily instead of weekly) and adds a failure-notification step, so breakage surfaces as an open issue instead of rotting silently.Changes
.github/workflows/live-skills.yml: daily cron (0 3 * * *) plusworkflow_dispatch, runningmake live-skills-testghwith the workflowgithub.token(issues: write)scripts/live-skills-workflow.test.sh(workflow contract: schedule/dispatch-only triggers, SHA-pinned actions, no secrets) and wire it intomake script-testTest Plan
bash scripts/live-skills-workflow.test.shpassed on this branchmake live-skills-testitself verified by real opt-in runs on test: isolate unit tests from user state #1883 (2/2 tests passed against the live skills CLI, isolated home, no leakage)gh issuecommands (will validate end-to-end viaworkflow_dispatchafter merge)Related Issues
N/A (follow-up to #1883 review feedback; depends on #1883 — merge after it so
make live-skills-testexists on main)Summary by CodeRabbit
Chores
Tests