安装方式
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add luongnv89/skills --skill viral-product-evaluator Review a product codebase and landing page against 32 viral principles and produce a Virality Score plus ranked fixes. Use to audit virality or prioritize growth. Don't use for SEO, ASO, copywriting, or code review.
12
下载量
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add luongnv89/skills --skill viral-product-evaluator name: "viral-product-evaluator"
description: Review a product codebase and landing page against 32 viral principles and produce a Virality Score plus ranked fixes. Use to audit virality or prioritize growth. Don't use for SEO, ASO, copywriting, or code review.
license: MIT
effort: high
metadata:
version: 1.5.0
author: "Luong NGUYEN <luongnv89@gmail.com>"Grade a product against the 32 principles of viral products. Two inputs — a codebase and a
landing page — produce one output: a scored report of what's already satisfied and, in
priority order, what to do next to make it more viral.
Trigger when the user wants to:
Do not use for: technical SEO (seo-ai-optimizer), App Store ASO (aso-marketing),
turning a README into a page (landing-page-generator), or bug-hunting code review
(code-review). This skill
evaluates and prioritizes; it does not rewrite the product.
references/*.md files present for the rubric and output shape.Missing prerequisites → stop and report before gathering evidence.
It reads the codebase, fetches the landing page, and writes one report file
(viral-evaluation.md). It does not edit the user's source, change copy, or commit
anything — so no repo-sync/branch guardrail is needed. If the user then asks you to *apply*
fixes, that is a separate task (hand off to a copy/frontend skill); this skill stops at the
prioritized plan.
This skill invokes /browse, and only on the live URL path — a local file or an
auto-detected page needs nothing installed. Resolve it before fetching anything:
test -d "$HOME/.claude/skills/browse" || asm list -p claude --json | grep -q '"browse"' || {
echo "Missing required skill: browse" >&2
echo "Install it: asm install github:garrytan/gstack:browse -p claude -s global --yes" >&2
echo "No asm yet: npm install -g agent-skill-manager" >&2
echo "Verify: asm list -p claude --json | grep 'browse'" >&2
}
The install-path test runs first because /browse ships in gstack and may be present without
asm knowing about it. -p claude -s global is required: asm install will not guess a provider
non-interactively, and a project-scoped install lands where the $HOME test cannot see it.
A missing /browse is fail-soft, not fatal: print the commands above, then ask the user for a
local file or saved HTML of the page. Never score a URL you could not load — do not invent one.
Phase 3 writes viral-evaluation.md to the repo root or current working directory. When that path lives inside a git worktree, sync before the write to avoid clobbering remote work:
branch="$(git rev-parse --abbrev-ref HEAD)"
git fetch origin
git pull --rebase origin "$branch"
If the working tree is dirty: stash → sync → pop. If origin is missing or a conflict occurs: stop and ask the user. Skip this section only when the output path is outside any git repository.
Accept any combination the user provides; ask only for what's missing and truly needed.
/browse skill (headless). Capture rendered copy,headline, CTAs, pricing section, testimonials, nav, and <head> meta (og:image,
twitter:image, description, <title>).
index.html, a JSX/TSX/MDX page, a built dist/) → read it directly.index.html, app/page.tsx, pages/index.*, src/App.*, landing/, marketing/,
public/). Confirm the candidate with the user if ambiguous.
pricing/paywall/subscription principles, the feature surface ("does one thing"), and to
locate the landing page if no URL/file was given.
purpose", "target audience is developers", "we must stay subscription". Honor these when
*interpreting* a verdict (note the deliberate deviation) but still score the principle as
written so the number stays comparable.
If neither a URL, a file, nor a detectable page exists, stop and ask the user where the landing
page lives — do not invent one.
Run these in sequence. Emit the matching Step Completion Report (see
references/step-reports.md) after each.
/browse; file → read; else auto-detect).LemonSqueezy, RevenueCat, Chargebee), pricing config/constants, plan & tier definitions,
paywall/auth gating, trial logic. Grep for price, plan, tier, checkout,
subscription, free, trial, stripe, paddle.
feature evidence) so the main context stays clean. Collect: tier list, billing type (one-time
vs subscription), free-plan yes/no, and a one-line feature inventory.
references/principles.md — the full rubric. Score every principle PASS / PARTIAL /FAIL using its criteria. Do not skip any; absence of a thing a viral product would ship
(pricing, testimonials, demo) is a real FAIL, not "unknown".
name the actual tier, cite the file/line. Generic findings are not acceptable.
judgment/visual principle (hero punch, emotional headline, OG-image design,founder presence, novelty, price-vs-competitor) as low-confidence and record what a human
must eyeball.
scripts/virality_score.py: pass every verdict as{"verdicts": {"<principle number>": "PASS|PARTIAL|FAIL", ...}} and use the helper's
counts, score, and tier (contract in references/principles.md → Scoring). Do not
tally or round in prose.
references/report-template.md and produce the report in that exact shape:verdict block → scorecard (all 32) → top fixes (prioritized) → what's working → caveats.
headline/proof/single-CTA first. Merge principles that share a root cause into one fix. Make
each fix concrete enough to act on (give the actual proposed headline, the tier to cut, the
CTA label) — quote what it is Now and what to Change it to.
viral-evaluation.md — repo root, or the current working directorywhen there is no repo — and also print the verdict block + top fixes inline.
This is a critique tool — its value is candor: never inflate scores, never invent flaws, label low-confidence verdicts. The full candor rules are in references/honest-evaluation.md.
After each phase, emit the report from references/step-reports.md. The three phases are
Gather Evidence, Evaluate, and Prioritize & Report.
scripts/virality_score.py over all 32 verdicts(PASS=1, PARTIAL=0.5, FAIL=0); per-principle verdicts and evidence remain model-owned.
also printed inline; Step Completion Reports emitted per phase.
A report containing:
---
references/principles.md — the 32-principle rubric: per-principle checks, evidence source,PASS/PARTIAL/FAIL bars, confidence flags, and the scripts/virality_score.py scoring
contract. Load every run.
references/report-template.md — exact output shape (verdict block, scorecard, prioritizedfixes, strengths, caveats) with a calibration example.
references/step-reports.md — Step Completion Report formats for the three phases.references/honest-evaluation.md — the full candor rules: no inflation, no invented flaws,labelled low-confidence, stop on fetch/read failure.
scripts/virality_score.py — deterministic Virality Score + tier helper (tests/ holds itsstdlib fixtures).