You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Three fixes so a healthy run scores green:
Smoke mode is now an explicit lightweight load-check. The appended instruction said 'begin authoring the YAML', which led Claude to attempt the full build and never stop to report before the cap (both prior runs), while the assistants that ran ~2 discovery scripts and reported passed. It now says: run one or two discovery commands to confirm the skill and its scripts work, then STOP and report — do not author YAML or deploy.
classify() no longer treats a fusion script's argparse error (e.g. 'action_search.py: error: unrecognized arguments') as a decisive terminal flag failure — that is recoverable, and an assistant that fixes the args and reports a successful command now passes. Only an assistant-CLI launch-flag rejection ('Error: unknown flag ...') is decisive.
An account/quota exhaustion (e.g. Antigravity's 'Individual quota reached — upgrade your subscription') is now an environment SKIP, like a missing CLI, rather than a FAIL: it is not a skills or harness fault and cannot be fixed by re-running. SKIPs are not counted among tested assistants and never fail the run; the summary reports them separately.
test-assistants-classify.sh covers all three (24 cases): a recovered script-argparse run passes, a true launch-flag rejection is decisive flag, and a quota message is SKIP|account. shellcheck clean; prompt-consistency gate still holds (PROMPT is unchanged; only the appended report instructions changed).
Copy file name to clipboardExpand all lines: test-assistants.sh
+41-18Lines changed: 41 additions & 18 deletions
Original file line number
Diff line number
Diff line change
@@ -130,21 +130,22 @@ report_instructions() {
130
130
131
131
Two more things, because this is a timed test harness rather than a real build.
132
132
133
-
Do not import or deploy the workflow — discover the actions you need and begin
134
-
authoring the YAML, no further. You have about ${REPORT_AT} seconds of wall clock; run \`date\`
135
-
if you need to know where you are. When that is up, stop wherever you have got to and
136
-
report. Report early — right away — if something blocks you, if you find yourself
137
-
about to ask me a question, or if you sense you are about to be interrupted.
138
-
Running out of the time budget is expected and is not a failure — report what you
139
-
have done so far with BLOCKER: NONE. The report is worth more to me than the extra
140
-
progress.
133
+
This is a lightweight smoke test of the SKILL, not a real build. Your ONLY goal is
134
+
to confirm the skill loaded and its scripts run: run one or two discovery commands
135
+
(for example action_search.py or trigger_search.py, or this skill's own script such
136
+
as query_workflows.py --list), then STOP and report. Do NOT author workflow YAML,
137
+
and do NOT import or deploy anything.
138
+
139
+
Report within about ${REPORT_AT} seconds — run \`date\` to check where you are. Report
140
+
immediately if something blocks you or you find yourself about to ask a question.
141
+
Running out of the time budget is not a failure; report what you have with BLOCKER: NONE.
141
142
142
143
To report, end your reply with these five lines, in this order, each starting a line
143
144
of plain text. No code fence, no blockquote, no bullets, no bold, and no angle
144
145
brackets in anything you write:
145
146
146
147
FUSION-REPORT
147
-
STATUS: <one word — WORKING if the scripts are doing real work, BLOCKED only if a real problem stopped you, DONE if the workflow is authored. Running out of the time budget is NOT blocked; that is WORKING>
148
+
STATUS: <one word — WORKING or DONE if the skill's scripts ran, BLOCKED only if a real problem stopped you. Running out of the time budget is NOT blocked; that is WORKING>
148
149
SKILLS: <comma-separated paths of the skill files you loaded, or NONE>
149
150
COMMANDS: <comma-separated, every fusion-skills script you ran (action_search.py, validate.py, etc.), each written as the script followed by => OK or => FAIL: reason. NONE if you ran none>
150
151
BLOCKER: <one line naming a real problem, quoting the error verbatim if there was one. NONE if nothing did. The time budget is not a blocker — if you simply ran out of time and nothing failed, write NONE>
# An account-level block — quota or subscription exhausted — is not a skills or
554
+
# harness fault and cannot be fixed by re-running, so treat it as an environment SKIP
555
+
# (like a missing CLI), not a failure. Anchored on assistant billing phrasing so it
556
+
# cannot match a skill doc's own "rate limit" guidance.
557
+
grep -qiE "quota reached|quota exceeded|upgrade your subscription|subscription (required|expired|to increase)|insufficient (credits|quota)|out of (credits|quota)"<<<"$body"&& { echo"SKIP|account|account quota/subscription limit reached||";return; }
558
+
552
559
# A Python traceback for a missing dependency is decisive: the venv was never built
553
560
# (the SessionStart hook is Claude-only) or the script was run outside python.sh.
554
561
grep -qiE "ModuleNotFoundError|No module named '(falconpy|yaml|tomli)'"<<<"$body"&& { echo"FAIL|deps|missing Python dependency (venv not built?)||";return; }
555
562
# An unresolved ${CLAUDE_PLUGIN_ROOT} means the skill's own invocation path expanded
556
563
# empty — the env var is set only by Claude Code, so this is the classic non-Claude
557
564
# failure. Anchored on the shell's own "No such file"/"not found" for that path.
558
565
grep -qiE '(^|/)scripts/python\.sh: (No such file|command not found)|\$\{?CLAUDE_PLUGIN_ROOT\}?/'<<<"$body"&& { echo"FAIL|root|CLAUDE_PLUGIN_ROOT unset — script path did not resolve||";return; }
grep -qiE "401 Unauthorized|403 Forbidden|\"?errors\"?.*invalid_client|access denied|Failed to authenticate|Could not authenticate"<<<"$body"&& { echo"FAIL|auth|credentials rejected by the tenant||";return; }
561
572
grep -qiE "^[[:space:]]*(❌[[:space:]]*)?Error: no TTY available|^[[:space:]]*(❌[[:space:]]*)?could not open a new TTY|/dev/tty: device not configured"<<<"$body"&& { echo"FAIL|tty|CLI demanded a TTY||";return; }
562
573
grep -qiE "Not inside a trusted directory"<<<"$body"&& { echo"FAIL|trust|refused to run in this directory||";return; }
0 commit comments