diff --git a/README.md b/README.md
index fb6fdc4..f2e5e94 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,7 @@ input paths through the environment rather than interpolating them into shell so
default artifacts under the runner's temporary directory, and keeps the CLI's exit-code contract:
```yaml
-- uses: softpeanut/csv-preflight@v0.5.0
+- uses: softpeanut/csv-preflight-action@v1
with:
path: data/import.csv
normalized_path: ${{ runner.temp }}/import.normalized.csv
diff --git a/index.html b/index.html
index 0980ffd..90930ad 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
OR PASTE
Shopify preset reviewed against the official product CSV guide on 2026-08-27. It checks a bounded set of documented rules and does not guarantee import success.
ENCODINGPasted text
DELIMITERComma
ROWS0
ISSUES0
Preflight report
FREE NODE.JS 20+ CLI
Check one CSV in a terminal.
Run the same generic structural preflight locally with no package install. The CLI writes a normalized CSV and issues report, returns CI-friendly exit codes, and refuses to overwrite existing output. The free CLI is limited to one generic file per run; batch, Shopify profiles, ZIP, and JSON automation remain Pro features.
The public composite Action runs the same one-file structural check inside GitHub Actions. It reads the path through an environment variable, keeps the file on the runner, writes normalized CSV and issue-report artifacts under the runner temporary directory by default, and fails the step when issues are found.
- uses: softpeanut/csv-preflight@v0.5.0
One generic UTF-8 CSV up to 10 MiB. Pin a full commit SHA when immutable third-party code is required. Batch, Shopify profiles, ZIP, and JSON output remain Pro features. Read the complete workflow guide.
The standalone public composite Action runs the same one-file structural check inside GitHub Actions. It reads the path through an environment variable, keeps the file on the runner, writes normalized CSV and issue-report artifacts under the runner temporary directory by default, and fails the step when issues are found.
- uses: softpeanut/csv-preflight-action@v1
One generic UTF-8 CSV up to 10 MiB. Pin a full commit SHA when immutable third-party code is required. Batch, Shopify profiles, ZIP, and JSON output remain Pro features. Read the complete workflow guide.
One public repository or sanitized minimal reproduction, one generic UTF-8 CSV path, one GitHub-hosted Ubuntu workflow, diagnostic artifacts, a short usage note, and one revision. No private access, secrets, schema rules, import execution, or ongoing maintenance. Delivery within three business days after written scope and verified payment.
OFFLINE BATCH + CI CLI · PERSONAL 15,000 / TEAM 100,000 SATS
Process up to 20 files locally or in CI.
The completed Pro edition creates comma-separated UTF-8 normalized files, per-file issue reports, and a manifest in one ZIP. It includes a browser interface and a Node.js 20+ CLI with JSON output, deterministic exit codes, and no-overwrite protection. Both keep every parsed data row and include generic, Shopify new-product, and Shopify update profiles.
Choose Personal for one user (15,000 sats) or Team for up to 10 named users in one legal organization (100,000 sats). Both tiers receive the same completed archive; only the license scope differs. No upload, account, subscription, schema mapping, sensitive data, or import guarantee. After availability is confirmed, the seller posts an issue-bound single-use Lightning invoice matching the selected tier and verifies its status directly. Delivery is through a buyer-only private GitHub repository.
$29 structural cleanup: one file up to 1 MB, a normalized CSV, and an issue report. No schema mapping or revision.
$99 importer-fit cleanup: one file up to 10 MB, one target schema—including a bounded Shopify product import—plus a cleaned CSV, an issue report, and one revision.
Payment available by Lightning: after scope and terms are agreed, the exact sats amount is quoted for softpeanut@stacker.news. Do not pay before receiving that written quote.
Fit, delivery, payment, and cancellation terms are confirmed before any work or payment. No sensitive or regulated data. Do not attach data, credentials, or private links to a public issue.
Check project fit ↗
diff --git a/offer.test.mjs b/offer.test.mjs
index 99c3638..6b76283 100644
--- a/offer.test.mjs
+++ b/offer.test.mjs
@@ -127,15 +127,15 @@ test("offers only the completed bounded offline batch product", () => {
});
test("publishes the tested free Action without blurring the Pro boundary", () => {
- assert.match(page, /FREE GITHUB ACTION · v0\.5\.0/);
- assert.match(page, /softpeanut\/csv-preflight@v0\.5\.0/);
+ assert.match(page, /FREE GITHUB ACTION · v1\.0\.0/);
+ assert.match(page, /softpeanut\/csv-preflight-action@v1/);
assert.match(page, /keeps the file on the runner/);
assert.match(page, /One generic UTF-8 CSV up to 10 MiB/);
assert.match(page, /Batch, Shopify profiles, ZIP, and JSON output remain Pro features/);
assert.match(action, /using: composite/);
assert.match(action, /CSV_PREFLIGHT_INPUT: \$\{\{ inputs\.path \}\}/);
assert.match(page, /validate-csv-github-actions\.html/);
- assert.match(githubActionGuide, /softpeanut\/csv-preflight@340b31bb16a4c39463be3378270ea6c628aa5461/);
+ assert.match(githubActionGuide, /softpeanut\/csv-preflight-action@eb04c527a46ce3bc8bfc711fde8e93ca947597ae/);
assert.match(githubActionGuide, /if: always\(\)/);
assert.match(githubActionGuide, /contents: read/);
assert.match(githubActionGuide, /does not upload the CSV/);
diff --git a/validate-csv-github-actions.html b/validate-csv-github-actions.html
index 82cf7e7..1f71404 100644
--- a/validate-csv-github-actions.html
+++ b/validate-csv-github-actions.html
@@ -14,7 +14,7 @@
-
+
Validate CSV Files in GitHub Actions
Fail a workflow on broken structure, retain the diagnostic files, and keep the CSV on the runner.
The full commit SHA pins the checked v0.5.0 Action bytes. A shorter @v0.5.0 reference is easier to read, but a full SHA prevents a tag move from changing third-party code without a workflow diff. Apply the same pinning policy to every external Action when your threat model requires immutable dependencies.
+
The full commit SHA pins the checked v1.0.0 Action bytes. A shorter @v1 reference is easier to read, but a full SHA prevents a tag move from changing third-party code without a workflow diff. Apply the same pinning policy to every external Action when your threat model requires immutable dependencies.
What the Action checks
@@ -113,7 +113,7 @@
Use schema checks separately
Structural validation cannot decide whether a price is negative, a customer ID exists, or a date belongs to the required timezone. Add importer-specific schema and business-rule checks after structural parsing. Keep their reports separate so reviewers can distinguish malformed CSV from valid CSV containing invalid domain values.