@glapsfun/tflow
Advanced tools
+16
-0
@@ -10,2 +10,18 @@ # Changelog | ||
| ## [0.1.1] - 2026-06-29 | ||
| ### Fixed | ||
| - The post-install `validate.sh` self-check no longer reports | ||
| `FAIL tflow-skill-creator` on machines with shellcheck installed. `validate.sh` | ||
| Rule D runs whatever shellcheck is on PATH, and different shellcheck versions | ||
| number the same false positives differently — a trap-invoked `cleanup()` is | ||
| `SC2317` ("unreachable") in 0.9.0 but `SC2329` ("never invoked") in 0.10+. Rule | ||
| D now excludes the full set spanning those versions: `SC2317`/`SC2329` (trap | ||
| cleanup), `SC2016` (literal-backtick `printf`), `SC2115` (guarded `rm -rf`), | ||
| and `SC2015` (the `emit` helper's benign `A && B || true`), so the shipped | ||
| skills validate clean from 0.9.0 (CI runners) through 0.11.0 (dev). Added a | ||
| regression test that validates every shipped skill and prints the shellcheck | ||
| version and findings on failure. | ||
| ## [0.1.0] - 2026-06-28 | ||
@@ -12,0 +28,0 @@ |
+1
-1
| { | ||
| "name": "@glapsfun/tflow", | ||
| "version": "0.1.0", | ||
| "version": "0.1.1", | ||
| "type": "module", | ||
@@ -5,0 +5,0 @@ "description": "A factory for authoring Agent Skills to the agentskills.io open standard.", |
@@ -276,2 +276,23 @@ #!/bin/sh | ||
| run_real_skill_validation_tests() { | ||
| # Every shipped skill must pass the shipped validate.sh cleanly — including | ||
| # the Rule-D lint gate when shellcheck is present. Regression guard for the | ||
| # lint false positives that made the installer self-check report | ||
| # FAIL tflow-skill-creator in v0.1.0. On failure, surface validate.sh's | ||
| # output and the linter version so cross-environment differences are | ||
| # diagnosable instead of an opaque "got 1". | ||
| SKILLS_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)" | ||
| for skill in tflow-research tflow-skill-creator tflow-skill-factory; do | ||
| [ -d "$SKILLS_DIR/$skill" ] || continue | ||
| if sh "$VALIDATE" "$SKILLS_DIR/$skill" > "$TMP_ROOT/vsc.txt" 2>&1; then | ||
| pass "shipped skill validates: $skill (exit 0 as expected)" | ||
| else | ||
| fail "shipped skill validates: $skill" "validate.sh exited non-zero" | ||
| command -v shellcheck >/dev/null 2>&1 && \ | ||
| shellcheck --version 2>&1 | sed 's/^/ [diag] shellcheck /' | ||
| grep -vE '^PASS ' "$TMP_ROOT/vsc.txt" | sed 's/^/ [diag] /' | ||
| fi | ||
| done | ||
| } | ||
| run_static_script_tests | ||
@@ -289,2 +310,3 @@ | ||
| run_script_contract_tests | ||
| run_real_skill_validation_tests | ||
@@ -291,0 +313,0 @@ printf '\n%d passed, %d failed\n' "$PASS" "$FAIL" |
@@ -318,3 +318,11 @@ #!/bin/sh | ||
| # R-SHELLCHECK — optional; WARN if absent (D-06), FAIL if present and non-zero | ||
| # R-SHELLCHECK — optional; WARN if absent (D-06), FAIL if present and non-zero. | ||
| # This runs whatever shellcheck is on PATH, whose version differs across machines | ||
| # (0.9.0 on Ubuntu runners, 0.11.0 on dev boxes) and which numbers the SAME false | ||
| # positive differently — e.g. a trap-invoked cleanup() is SC2317 ("unreachable") | ||
| # in 0.9.0 but SC2329 ("never invoked") in 0.10+. The exclude set therefore spans | ||
| # those version variants plus the project-wide waivers (.pre-commit-config.yaml): | ||
| # SC2317/SC2329 (trap cleanup), SC2016 (literal backticks in a single-quoted | ||
| # printf), SC2115 (rm with a guaranteed-non-empty var), SC2015 (the emit helper's | ||
| # benign `A && B || true`). Keeps the gate version-stable across shellcheck builds. | ||
| if command -v shellcheck >/dev/null 2>&1; then | ||
@@ -324,3 +332,3 @@ SC_FAIL=0 | ||
| [ -f "$script" ] || continue | ||
| if shellcheck --shell=sh "$script"; then | ||
| if shellcheck --shell=sh --exclude=SC2015,SC2016,SC2115,SC2317,SC2329 "$script"; then | ||
| emit PASS "shellcheck: $(basename "$script")" | ||
@@ -327,0 +335,0 @@ else |
128873
2.14%