agentic-commerce skill · v0.2.0

Find the genuinely best product for a specific person.

Not whatever ranks highest, reviews loudest, or pays the most commission. Discern runs a disciplined buying method and shows every step of its work.

Collapses affiliate echo to one signal Tears down the fundamentals Gates on value, not price
Portable core Runs in any AI runtime — subagents, browser & retailer APIs are optional boosters, never dependencies Fail-closed · unconfirmed = absent MIT · Node ESM + Go
Why it's different

Most shopping tools rank by price or stars and have no taste. Discern encodes a real method.

independence over volume

Echo counts as one signal

Syndicated and affiliate listicles that copy each other collapse to a single signal — visibility can't masquerade as quality. Union-find independence clustering, with affiliate down-weighting.

substance over marketing

A teardown, not a vibe

A dedicated step weighs chips, materials, and genuine value propositions — not spin. Handmade or local is value; "good enough" can beat "best."

value price markup

The price gate applies last

Options earn their place on fundamentals and independent recurrence first. Only then does a value-per-dollar gate decide — never a raw price sort.

evidence over a guess

"Not enough evidence" is an answer

Every run states an outcome and per-claim confidence on a 0..1 scale, with counterevidence and a failed-source log. It would rather abstain than launder a guess.

How that compares
Affiliate listicles Marketplace star-sort Generic LLM answer Discern
Ranks by commission / SEO count of ratings plausible recall fundamentals, then independent recurrence
Duplicate sources counted many times blended silently collapsed to one signal
Dealbreakers ignored filtered, then forgotten soft-honored structurally disqualified — can't win on merit
Price often the whole point a sort knob ad hoc value-per-dollar gate, applied last
Shows its work no partial no provenance · confidence · counterevidence
The method · eight steps

A disciplined human buying method, encoded.

The order matters: preferences and value come before price, and price is the last gate — not the first sort.

  1. 01

    Frame

    Pin the need and the beneficiary — self or recipient.

  2. 02

    Triage

    Set research depth to match the stakes.

  3. 03

    Harvest

    Sweep many sources across roundup, requirement, and community angles.

  4. 04

    Cluster

    Collapse copied and affiliate echo — recurrence, not volume.

  5. 05

    Teardown

    Weigh the fundamentals: chips, materials, real value.

  6. 06

    Filter

    Apply your preferences; dealbreakers disqualify, structurally.

  7. 07

    Value gate

    Decide on value-per-dollar — price enters here, and only here.

  8. 08

    Source

    Find the best offer; scraped prices flagged verify-at-checkout.

Recommendation Object one schema-validated contract, consumed by every later phase RECOMMEND RECOMMEND_WITH_CAVEATS INSUFFICIENT_EVIDENCE
See it decide

The full considered set, on four derived axes.

A scannable tableau over every candidate — nothing considered is hidden. Bars are drawn on the same 0→1 scale the engine scored them on. This is the bundled example run, rendered by the Go viewer.

Over-ear noise-cancelling headphones for travel and focus
2 considered · 2 eligible · 0 removed
Comparison of candidates across fundamentals, consensus, evidence, and clean-record axes
  Product Fundamentals Consensus Evidence Clean
◄ PICK Sony WH-1000XM5 · Sony
.86
2
.77
.75
▲ runner-up Bose QuietComfort Ultra · Bose
.82
1
.79
1.00
✗ REMOVED Acme Studio 3 · Acme
.88
3
.80
.90
↳ rule: must support LDAC  ·  SBC/AAC only — no LDAC codec  [dealbreaker]

A dealbreaker doesn't merely filter — it disqualifies structurally, and the cut stays visible with its scores intact and the rule shown, so nothing considered is invisible. (The Acme row is illustrative; the bundled run has no dealbreakers.)

◄ PICK leads on fundamentals + recurs most ▲ runner-up close, fewer independent clusters ✗ removed disqualified, scores kept visible

Markers use symbol and word — never color alone. The Node core computes every score once; the Go viewer only plots it. No decision logic is duplicated across the seam.

Adopt it

Running in three steps.

Discern is an agent skill, not a CLI binary — and it's AI-agnostic. Open the repo in any agent, and just ask; it reads AGENTS.md and runs the method.

step 01

Clone & gate

Grab the repo and run the offline gate — it validates the schemas and every golden fixture.

# Node tools + offline gate git clone https://github.com/gtm-k/discern.git cd discern npm install npm test
step 02

Build the viewer

One Go binary lists, filters, and reads runs — and plots the compare tableau.

# from repo root cd viewer go build -o discern-view . cd .. # see it now on the example run viewer/discern-view --store store/example
step 03

Just ask

Open the repo in any AI agent — Claude Code, Cursor, Codex, Gemini. It reads AGENTS.md and knows what to do.

# in your agent, plain language: Find me the best noise-cancelling headphones under $300. # first run: Discern sets up your # profile by chatting, then runs.

Real profiles and live run history are git-ignored — only *.example.md and store/example/ ship. Two toolchains, two gates, both green before any change: npm test and go vet ./... && go test ./... && go build ./....