From 895ec7075a95c6c6b556d871b0caf92f122ca340 Mon Sep 17 00:00:00 2001 From: KimBeomJin Date: Thu, 27 Aug 2026 22:02:11 +0900 Subject: [PATCH] Point users to the standalone CSV Action --- README.md | 2 +- index.html | 2 +- offer.test.mjs | 6 +++--- validate-csv-github-actions.html | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) 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.
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.

node cli.mjs input.csv --output normalized.csv --report issues.csv

Download free CLI ↗
-
FREE GITHUB ACTION · v0.5.0

Fail CI before a broken CSV reaches an importer.

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.

View Action release ↗
+
FREE GITHUB ACTION · v1.0.0

Fail CI before a broken CSV reaches an importer.

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.

View Action release ↗
FIXED-SCOPE CSV CI SETUP · $99

Get one repository wired correctly.

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.

Read the complete scope, payment, cancellation, and refund terms.

Check setup fit ↗
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.

Review the license, delivery, and refund terms

Start Pro order ↗
FIXED-SCOPE SERVICE

Need a difficult CSV cleaned?

$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.

@@ -47,7 +47,7 @@

A complete workflow

- uses: actions/checkout@v4 - name: Check CSV structure - uses: softpeanut/csv-preflight@340b31bb16a4c39463be3378270ea6c628aa5461 + uses: softpeanut/csv-preflight-action@eb04c527a46ce3bc8bfc711fde8e93ca947597ae with: path: data/import.csv normalized_path: ${{ runner.temp }}/import.normalized.csv @@ -63,7 +63,7 @@

A complete workflow

${{ runner.temp }}/import.issues.csv if-no-files-found: warn -

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.

-

Start with the browser checker, inspect the source and tests, or use the public v0.5.0 Action release. For offline batch and team use, the published Pro terms describe the completed product. If you want this exact one-file workflow configured against a public or sanitized repository, the separate $99 fixed-scope setup terms define every deliverable and exclusion before payment.

+

Start with the browser checker, inspect the standalone Action source and tests, or use the public v1.0.0 Action release. For offline batch and team use, the published Pro terms describe the completed product. If you want this exact one-file workflow configured against a public or sanitized repository, the separate $99 fixed-scope setup terms define every deliverable and exclusion before payment.