Skip to content

docs: correct the README against the code, and tag Revyl links for attribution - #20

Merged
ethanzhoucool merged 1 commit into
mainfrom
docs/readme-refresh
Jul 28, 2026
Merged

docs: correct the README against the code, and tag Revyl links for attribution#20
ethanzhoucool merged 1 commit into
mainfrom
docs/readme-refresh

Conversation

@ethanzhoucool

@ethanzhoucool ethanzhoucool commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

The README was behind the last several merged PRs, and a few things in it were wrong rather than just missing.

Fixed drift:

  • preflight --verify was undocumented. The CLI prints a tip about it on every run.
  • --exit-code was only documented for playscan. It is on preflight and verify too, and it is the right answer for the CI section, which still used a jq hack.
  • The CRITICAL/HIGH/WARN/INFO ladder was never written down. HIGH shipped in Tier 0: verdict integrity (HIGH tier, --exit-code, scanner fixes) #6; the Claude Code section still said "CRITICAL, then WARN, then INFO".
  • The codescan list claimed "30+ code patterns" and put several rules at the wrong severity. It is 24 rules and about 60 patterns. Now grouped by the severity each rule actually emits, checked against the code, with webview-only, missing-privacy-keys and console-log added.
  • The crypto 3.1.5(b) rules from feat(codescan): detect crypto apps and flag Guideline 3.1.5(b) obligations (wallet org-account + exchange licensing) #14 were missing.
  • verify's Android support, --artifact upload, --open, and the .app / .apk artifact rules were missing.
  • The inline // greenlight:ignore directive was missing from the config section.
  • The output-format section said all scan commands support terminal/json/sarif. privacy has no --format, ipa/playscan/verify are terminal+json, scan has junit.
  • playscan was missing from the architecture tree.
  • Added the /plugin marketplace add path now that .claude-plugin ships.

Every flag and command in the new README was diffed against --help output. Every severity claim was diffed against the rule definitions.

Editing pass on top: 45 em dashes to 0, 34 bold spans to 1, and the padding trimmed.


Second commit: Revyl attribution + CTA.

Every Revyl link in the README was untagged, so traffic off a 2.3k-star repo landed unattributed. Now tagged with utm_medium=readme and a per-placement campaign, following the pattern #13 set for the CLI.

  • Reframed the runtime tier. The intro led with "it needs an account and it is opt-in", which sells against it. It now leads with what verify catches and discloses the requirement after.
  • New section, "Where a static scan stops": the honest ceiling of text matching, with three concrete flows that ship GREENLIT and get rejected anyway. Lands on verify --dry-run, which is free, needs no account, and works with the revyl CLI absent.
  • Two-minute setup block in the verify section, and a --verify CI gating example.
  • Badge row and a footer with an actual next action.

--dry-run was tested with the revyl CLI off PATH to confirm the "no account needed" claim. An earlier draft had a REVYL_API_KEY env var in the CI snippet; greenlight has no such variable (auth is delegated to the revyl CLI), so it was removed.

The README had drifted behind several merged PRs.

- Document `preflight --verify`, which chains the runtime tier onto the
  static run. It was undocumented even though the CLI advertises it.
- Document `--exit-code` on preflight/playscan/verify, and replace the jq
  hack in the CI section with it.
- Add the CRITICAL/HIGH/WARN/INFO ladder. HIGH shipped in #6 and was never
  written down; the Claude Code section still said "CRITICAL, then WARN,
  then INFO".
- Correct the codescan rule list against the code. It claimed "30+
  patterns" and got several severities wrong. It is 24 rules, ~60
  patterns, now grouped by the severity each rule actually emits, with the
  three undocumented rules (webview-only, missing-privacy-keys,
  console-log) added.
- Add the crypto 3.1.5(b) rules from #14.
- Document verify's Android support, --artifact upload, --open, and the
  simulator .app / .apk artifact rules.
- Document the inline `// greenlight:ignore` directive.
- Fix the output-format section, which claimed every command supports
  every format. privacy has no --format at all; ipa/playscan/verify are
  terminal+json; scan has junit.
- Add playscan to the architecture tree.
- Add the /plugin marketplace install path now that .claude-plugin exists.

Editing pass on top of that: 45 em dashes to 0, 34 bold spans to 1.
@ethanzhoucool
ethanzhoucool merged commit 650113e into main Jul 28, 2026
4 checks passed
@ethanzhoucool ethanzhoucool changed the title docs: bring the README up to date with what greenlight actually does docs: correct the README against the code, and tag Revyl links for attribution Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant