agentleFS
chendanielychendaniely/skills/product-search/SKILL.md

product-search

Skill1 starsChanged 29 days agoMITView on GitHub

Use when creating or updating a product-search, product-comparison, or buying-guide note in a markdown knowledge vault — any note whose reader is deciding what to buy and will want to click through to candidates. Dan asks with any phrasing of "what should I buy", "find me a …", "compare X and Y" or "research it", including from a `Worth buying` row in an OOTD note. Not for an item already owned (that is clothing-inventory) or for judging an outfit (that is ootd).

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 6 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Write these sections, in this order.

    line 16
  2. Distinctive:

    Never silently drop a near miss: If a candidate is excluded, the exclusion is a sentence with a number in it.

    line 62
  3. Distinctive:

    Prices are perishable: Always stamp "read YYYY-MM-DD — re-verify at checkout".

    line 91
  4. Distinctive:

    Verify the photo shows the product: Read the image after downloading — listings mislabel, and a folding lamp photographed folded reads as a …

    line 93
  5. Distinctive:

    Unknown is a value: Write "not published" rather than estimating.

    line 97
  6. Distinctive:

    Supersede by annotation, never deletion: When a finding is overturned, mark the old one and say what changed.

    line 98
  7. Very specific:

    Start from template-product-search.md in this directory.

    line 113

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Product Search Notes

Overview

The reader is shopping, not studying. They open the note to answer "what do I buy, what does it look like, where do I click" — and only then "why". A note that opens with context and buries the verdict is the wrong shape, however good the research.

Core principle: verdict first, evidence below. Sections run in decreasing order of "how often will I need this", never in the order the research happened.

The section contract

Write these sections, in this order. Omit one only if it is genuinely empty.

#SectionContains
1(frontmatter + H1)Tags: #product_search; add Decision / Decided / Rationale once settled
2Verdict lineOne line, directly under the H1: status, date, and the current pick with its price
3## ⭐ ShortlistThe top thing on the page. Ranked table, 3–6 rows, every row image + link + price + criterion cells + verdict
4## Do thisNumbered actions, ≤6, each starting with a verb. Free/cheap tests come first
5## The briefThe need, then hard requirements as a checklist or table
6## Fit factsMeasurements/constraints table, with a confidence or source column. ⭐ If the search is gated on a space the owner already has, an owner reference photo of that space is required here — and if none exists yet, asking for it is an action in ## Do this
7## Full fieldEvery serious candidate, same row contract as the shortlist
8## WhyFindings, rationale, physics, tradeoffs — the deep material
9## Ruled outTable: candidate + one-line reason
10## Open questions- [ ] checkboxes
11## SourcesProvenance, sweep dates, method notes

Everything above ## Why should be scannable in under a minute.

Tables adapt to the search

The requirements define the columns. There is no fixed schema beyond image · name · price · verdict — every other column is a criterion this search is optimising for, so a reader can see match-or-miss without reading prose.

  • One column per criterion that discriminates. Bag search → capacity · laptop fit · weight · material. Light search → lux at working distance · CRI · CCT range · mount. Table search → height · footprint · material · weather.
  • ⭐ Drop any column every candidate passes. A column where all rows say ✅ is decoration — state it once in the brief as an entry condition and reclaim the width for something that separates candidates.
  • Order columns by how much they decide. The criterion that actually picks the winner goes immediately after price.
  • Put the decisive number in the cell, not a rating. 680 lux (6.8×) beats good.

Match markers — one per cell

MarkerMeans
✅meets the criterion
⚠️near miss — always show the value and the gap
⛔fails a hard requirement
❓not published — never guess, and never let a blank imply a pass

Hard vs soft requirements

Default every requirement to soft. Mark one hard only when missing it makes the product unusable, not merely worse. Say which is which in the requirements table.

Effect of a miss
HardDisqualifying → move to ## Ruled out with the number
Soft⭐ Stays in the table, marked ⚠️ with the gap quantified — and can still win overall
  • ⭐ A soft miss is a data point, not a rejection. "≤50 cm" does not kill a 53 cm product; it makes it 53 cm, 6% over. Show the number and let the reader judge.
  • Never silently drop a near miss. If a candidate is excluded, the exclusion is a sentence with a number in it. A reader must never wonder whether an obvious product was considered.
  • Recommend outside the stated range when the overall case is better — and say plainly that you are doing so, with what it costs. Self-imposed numbers are a search heuristic, not a spec the world agreed to.
  • Ranges in the brief are the centre of a band, not a wall. Where a tolerance is meaningful, say it: "≤50 cm (soft, ~±15%)".

⚠️ The failure this prevents: mechanically applying a number invented early, before the field was known, and dropping the best candidate for missing it by a few percent — invisibly, so nobody can audit the decision.

The row contract (non-negotiable)

Every row naming a product, in every table, carries all five:

| ![[image.jpg\|150]] | **[Product Name](https://buy-here)** | **CA$134** | ✅ <value> | ⚠️ <value, gap> | <verdict> |
  1. Image — embedded, sized 120–150 in tables
  2. Name, hyperlinked to somewhere it can be bought or specced
  3. Price with a currency code (CA$, US$), plus an as-of date somewhere on the page
  4. Criterion cells — one per column this search uses (see Tables adapt to the search), each with a match marker
  5. Verdict — one clause

A row missing the image or the link is incomplete — the reader is browsing, and a name they cannot see or click costs them a search.

## Ruled out is the one exception: its rows need only the hyperlinked name, the hard requirement it fails and the number — no image and no price.

Rules

  • Tables and bullets over prose. Prose only where reasoning genuinely needs sentences (## Why). No paragraph where a table works.
  • Rank the shortlist and mark the single pick ⭐. Ties are a failure to decide — say which wins and on what.
  • Verdict cells: one clause. Lead with what decides it.
  • Prices are perishable. Always stamp "read YYYY-MM-DD — re-verify at checkout". Note the retailer, and prefer a local/in-stock channel when one exists. Rank on one currency: convert any other price, and state the conversion and the date read (US$99 ≈ CA$136 at 1.37, read YYYY-MM-DD).
  • Images live in the vault, not hotlinked: download to the attachment folder, kebab-case descriptive filename (amaran-ace-25c.jpg), embed with ![[name.jpg|150]]. ⚠️ Inside a table the pipe must be escaped: \|.
  • Verify the photo shows the product. Read the image after downloading — listings mislabel, and a folding lamp photographed folded reads as a straight bar.
  • A photo shows one state of a moving thing. Before generalising from what surrounds an object in a photo, establish which state it is in. A cabinet door photographed open shows a room the closed door hides — an aesthetic constraint read off that background can be entirely spurious. Geometric inferences from a photo usually survive; contextual ones need the state confirmed first.
  • Ask what else it would get used for. A candidate that earns its keep beyond the one job can beat a better single-purpose winner, and the owner usually knows this before the research does. Record second-use value as an explicit criterion rather than letting it arrive as a late surprise.
  • When the pick has a precondition, put the precondition in the verdict line. "Works if X" is a different recommendation from "works" — and if X is free (a light switch, a setting), the conditional pick is often still right. Quantify both sides so the reader can judge the risk of forgetting.
  • Unknown is a value. Write "not published" rather than estimating. Mark derived numbers as derived and never rank them against measured ones.
  • Supersede by annotation, never deletion. When a finding is overturned, mark the old one and say what changed. The page should show how the answer moved.

Common mistakes

MistakeFix
Shortlist below the fold, under contextVerdict line + shortlist first; context is section 5
Product named in prose with no image or linkApply the row contract — every mention gets both
Spec dump with no verdictRank, mark ⭐, say what would change the pick
Prices with no dateStamp the read date; they go stale in weeks
Long paragraphs of rationale up topMove to ## Why; keep the top scannable
Candidate table with a blank image cellDownload it, or say why none exists

Template

Start from template-product-search.md in this directory.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.