One SKILL.md, Four AI Tools: A Competitor Review Skill
One competitor review SKILL.md for Claude Code, Codex, Antigravity CLI and Gemini, checked against each official doc. Nine real API calls read 967 reviews for $0.0125.

We wrote one "competitor review analysis" SKILL.md and kept its frontmatter inside the Agent Skills spec. By each product's official docs, the same file loads in Claude Code, Codex and Antigravity CLI with no changes. On our machine we ran the skill scripts, the spec validator and the data API; we did not install Codex or Antigravity. The Gemini app can import it, but its skill scripts cannot reach the internet, so the skill cannot fetch data there.
On October 26, 2026, from 17:25 to 17:55 SGT, the skill built one report on three project-management tools. It used 9 calls to G2, Capterra and Trustpilot, read 967 reviews, and cost $0.012501 in API fees. The biggest risk was in the data, not in the tools. On Trustpilot, unprompted reviews for five companies averaged 1.29 to 2.77 stars, and invited reviews averaged 4.07 to 4.89 stars.
The short answer: one SKILL.md, four folders, one 9-call bill
This article answers one practical question. You use Claude Code skills today. Your teammates use Codex or Antigravity CLI. Can the whole team share one SKILL.md for competitor review analysis? We wrote down three pass criteria before the first API call.
First, the frontmatter must pass the Agent Skills spec, field by field. Second, the folder path and the way to call the skill must come from each product's own docs. Third, the API fee must equal the catalog price times the number of calls, with zero difference. All three passed. One product passed only half.
The table puts the four products side by side. Every cell comes from the vendors' own docs, which we read on October 26, 2026. The links are in the sections below. The last column asks one question: can the skill's own script reach api.everyinfra.com? Without that, this skill cannot do its job.
| Product | Project folder | Personal folder | How to call it | Can the script fetch data? |
|---|---|---|---|---|
| Claude Code | .claude/skills/<name>/SKILL.md | ~/.claude/skills/<name>/SKILL.md | /name, or Claude picks it from the description | Yes in local sessions; not in Cowork or cloud sessions. |
| Codex (CLI, IDE, desktop) | .agents/skills, from the working folder up to the repo root | $HOME/.agents/skills | $name, /skills, or Codex picks it | Yes. |
| Antigravity CLI | .agents/skills/ | ~/.gemini/antigravity-cli/skills/ | /skills to list, or the agent picks it | Yes. |
| Gemini app | Not used (upload on the Skills page) | Not used | / or @ and the skill name | No: scripts that need the internet are not supported. |
The first and third rows differ in one way that matters. Claude Code uses .claude/skills for projects. Codex, Antigravity CLI and the retired Gemini CLI all read .agents/skills. So a repo that serves all of these tools can keep the skill in .agents/skills/competitor-review-analysis/ and add a symlink to it under .claude/skills/. The Claude Code docs say a skill folder can be a symlink. The Codex docs say Codex follows symlinked skill folders (Claude Code skills docs; Codex Build skills).
What agent skills are: a SKILL.md with six fields
Agent Skills is an open format. A skill is a folder with at least one SKILL.md file. The file starts with YAML frontmatter, and Markdown steps follow (Agent Skills specification). The spec defines six fields. Two are required: name and description.
Four are optional: license, compatibility, metadata and allowed-tools. The name must be 1 to 64 characters of lowercase letters, digits and hyphens. It cannot start or end with a hyphen, cannot contain two hyphens in a row, and must match the folder name. The description must be 1 to 1,024 characters and say what the skill does and when to use it. The spec marks allowed-tools as experimental, so support differs between agents.
The format saves context through "progressive disclosure", which has three levels. At session start, the agent loads only the name and description of each skill, about 100 tokens by the spec's estimate. When a task matches the description, the agent reads the full SKILL.md. The spec suggests fewer than 5,000 tokens and fewer than 500 lines. Files in scripts/ and references/ load only when the steps need them (Agent Skills specification). Anthropic described the same idea on October 16, 2025: give the agent a table of contents first (Anthropic on Agent Skills).
Our skill's name and description total 363 characters. At about 4 characters per token, that is about 91 tokens, close to the spec's estimate. The full SKILL.md has 51 lines and 3,426 characters, far below the 500-line limit. These two numbers come back in the context section below.
The competitor review SKILL.md, in full
Here is the complete file. The skill folder also holds two scripts and one keyword list. scripts/fetch_reviews.py calls the EveryInfra data API. scripts/classify.py tags each review with themes by keyword rules. references/themes.md holds the keywords.
---
name: competitor-review-analysis
description: Pull public reviews for 2-5 competing products from G2, Capterra, Trustpilot or Amazon through the EveryInfra data API, tag each review with a theme, and write a comparison report with counts, shares and quotes. Use when the user asks to compare competitor reviews, find what customers complain about, or build a review-based battlecard.
license: MIT
compatibility: Needs network access to api.everyinfra.com, Python 3.9+, and an EVERYINFRA_API_KEY environment variable. Does not run inside the Gemini app, where skill scripts cannot reach the internet.
metadata:
version: "1.1"
author: everyinfra-blog-example
---
# Competitor review analysis
## Inputs to confirm first
1. The products to compare (2-5). For each one, get the exact review page:
G2 `https://www.g2.com/products/<slug>`, Capterra `https://www.capterra.com/p/<id>/<name>/`,
Trustpilot domain such as `clickup.com`, Amazon `https://www.amazon.com/dp/<ASIN>`.
Use the URL, not the product name. Product names change (Capterra lists monday.com as "monday AI Work Platform").
2. The theme set: `saas` or `hardware` (see references/themes.md). Ask if unclear.
## Steps
1. Fetch: run `python3 scripts/fetch_reviews.py --plan plan.json --out raw/`.
One request per product per source. The script waits 7 s between requests,
retries 429 with the `retry_after` value, and sends slow requests with `"mode":"async"`.
2. Check counts: read `raw/summary.json`. A source with 0 rows was not charged.
Do not treat a short page as "no more reviews". Write the counts into the report.
3. Tag: run `python3 scripts/classify.py raw/ --themes saas > tagged.json`.
The script tags by keyword rules, so the same input gives the same output.
4. Read 5 tagged reviews per theme and check that the tag fits. If a keyword
matches the wrong words (v1 had `plan`, which matched "planning"), fix
references/themes.md and run step 3 again. Note each change in the report.
5. Write `report.md` with these sections, in this order:
- Table: product x source -> reviews read, average rating, charged USD.
- Table: theme x product -> count and share of reviews that mention it.
- Top 3 complaints per product, each with one short quote and its review URL.
- Limits: what the sample cannot show (see below).
## Rules
- Report rating scales as they are: G2 and Capterra 1-5, Trustpilot 1-5 stars, Amazon 1-5 stars.
Do not average across sources.
- Split Trustpilot by the `source` field: `Organic` (the reviewer came on their own) versus
invitation sources (`BasicLink`, `InvitationApi`, `FileUploadInvitation`, `Shopify` and others).
Report the average for each group. Never report one Trustpilot average for a company.
- Theme keywords are per language. For reviews that are not in English, use the matching set
(for example `saas_es`), or report them as untagged.
- Do not print reviewer names. Quote at most 25 words per review.
- Amazon returns only the reviews shown on the product page (usually 10-15). Say so.
- Cost: every request costs the `price_usd` from `GET /api/v1/social/catalog`. Add up `billing.charged_usd` from the responses; do not estimate.
## Limits to state in every report
- The sample is the newest page of each source, not all reviews.
- Trustpilot reviews of a software company are often about billing and support, not the product. Read them as a separate signal.Several lines exist only to make the file portable. The frontmatter uses five of the six spec fields. It does not use Claude Code extensions such as model, context: fork or argument-hint. The compatibility line states the network and key requirements.
A person who imports the file into the Gemini app sees at once that it cannot run there. Script paths are relative to the skill root, and file references stay one level deep, as the spec asks (Agent Skills specification). Two rules came only after we ran the data: "split Trustpilot by source" and "keywords per language". The next sections explain why.
We did not check the file by eye. At 17:56 SGT we ran the reference validator skills-ref 0.1.1 from the spec repository (agentskills/skills-ref) on three samples. The original file returned Valid skill. A copy with context: fork and model: haiku returned "Unexpected fields in frontmatter: context, model".
A copy with name: Review_Skill returned two errors: the name must be lowercase, and it contains invalid characters. This matches the Claude Code docs. In local Claude Code, every field in its table works. Uploads to claude.ai, the Skills API and package_skill.py accept only the six spec fields. An extra field there is a hard error (Claude Code skills docs).
| Sample | Change | skills-ref 0.1.1 result | Portable? |
|---|---|---|---|
| Original | None | Valid skill | Yes. |
| Negative 1 | Added context: fork and model: haiku | Error: unexpected fields context, model | Works in local Claude Code; claude.ai upload fails. |
| Negative 2 | name: Review_Skill | Error: must be lowercase; invalid characters | No. |
Five entry points, five sets of frontmatter rules
Before you put one file in several places, check what each entry point accepts. The table lists only rules that the vendors' own docs state. Where the docs say nothing, the cell says "not in docs".
| Entry point | `name` | `description` | Fields outside the spec | Other limits. |
|---|---|---|---|---|
| Agent Skills spec | Required; 1–64 chars; lowercase, digits, hyphens; same as folder | Required; 1–1,024 chars | Not part of the spec | Body under 500 lines suggested. |
| Claude Code, local | Optional; folder name by default | Recommended; 1,536 chars shown | model, context, hooks | Unknown fields ignored. |
| claude.ai upload and Skills API | Required; ≤64 chars; no "claude" or XML | Required; ≤1,024 chars | Extra field is an error | Under 30 MB; no network. |
| Codex | Required | Required | UI and dependencies go in agents/openai.yaml | First list uses 2% of context or 8,000 chars. |
| Entry point | `name` | `description` | Fields outside the spec | Other limits. |
|---|---|---|---|---|
| Antigravity | Optional; folder name by default | Required | Not in docs | Not in docs. |
| Gemini app | All lowercase, words split by hyphens | Length not in docs | Not in docs | 100 MB total; scripts cannot reach the internet. |
The table shows why we keep to the spec fields. The spec is the common subset. Local Claude Code is the most tolerant entry point, and the claude.ai upload is the strictest. Write for the strictest one, and every entry point accepts the file.
The docs also agree on how to write the description. Codex shortens descriptions first when many skills are installed, so put the key use and trigger words first (Codex Build skills). Claude Code cuts the description at 1,536 characters, so put the key use case first (Claude Code skills docs). Google's first tip is to define when to use the skill (About the transition from Gems to skills).
Our first sentence says what the skill does, from which sites, through which API. The second says which user requests should trigger it. The total is 337 characters, so no entry point cuts it.
Claude Code skills: ~/.claude/skills or .claude/skills
Claude Code reads skills from five places. These are enterprise (.claude/skills/ in the managed settings folder), personal (~/.claude/skills/<name>/SKILL.md), project (.claude/skills/<name>/SKILL.md), nested folders, and folders added with --add-dir. When names clash, enterprise wins over personal, and personal wins over project (Claude Code skills docs). A project skill can be committed, so every teammate gets it with the code. A personal skill works in every repo on your machine. Project skills load from the start folder up to the repo root, so a session in packages/frontend/ still sees a root skill.
Three limits matter for a weekly competitor report. First, Cowork sessions and cloud sessions, including cloud scheduled tasks, do not read ~/.claude/skills/ on your machine. They load only the skills that you turn on in your claude.ai account. If the skill lives only in the local folder, a cloud scheduled task reports that it cannot find the skill.
Desktop scheduled tasks run on your machine, so they do read ~/.claude/skills/ (same docs, "Use skills in Cowork and cloud sessions"). Second, an upload to claude.ai accepts only the six spec fields. Third, the skill listing has a budget. Each description plus when_to_use shows at most 1,536 characters.
The whole listing gets 1% of the model's context window, and the least-used skills lose their descriptions first. After auto-compaction, Claude Code re-attaches recent skills with their first 5,000 tokens each, within 25,000 tokens in total (same docs). That is why our description stays at 337 characters, with the key use case in the first sentence.
Claude Code also has extensions that work only in Claude Code. model switches the model for the turn. context: fork runs the skill in a forked subagent context. Only the result comes back to the main session (skills docs; subagents docs). allowed-tools pre-approves tools, and ! command lines inject live data into the body. These features help, but a file that uses them is no longer portable.
Our approach keeps the shared file inside the spec. For Claude Code-only behavior, put a second skill with the same name in your personal folder. The "personal wins over project" rule makes Claude Code use it, and other tools still read the spec version. With context: fork, the 967 raw reviews stay out of the main session.
You can also let the model call tools instead of running a script. Add the EveryInfra remote MCP server to Claude Code. We tested this command in an earlier article, so here it is a configuration example:
export EVERYINFRA_API_KEY="<your API key>"
claude mcp add --transport http everyinfra https://api.everyinfra.com/mcp \
--scope user --header 'Authorization: Bearer ${EVERYINFRA_API_KEY}'
claude mcp get everyinfraClaude Code turns on MCP tool search by default. At session start it loads only tool names and server instructions. It looks up tool definitions when needed (Claude Code MCP docs). This changes the context math in a later section.
Codex skills: .agents/skills and config.toml
Codex skills also build on the open Agent Skills standard, and SKILL.md must have name and description (Codex Build skills). Codex reads four kinds of locations. The repo level is .agents/skills in every folder from the working folder up to the repo root. The user level is $HOME/.agents/skills. The admin level is /etc/codex/skills.
System skills ship with Codex. When two skills share a name, Codex does not merge them, and both can appear in the picker. In the CLI or IDE extension, type /skills or mention a skill with $. Codex can also pick a skill from its description. In ChatGPT, you mention a skill with @.
Two numbers in the Codex docs affect how you write the description. By default the first skills list uses at most 2% of the model's context window, or 8,000 characters if the window size is unknown. The skills.max_context_tokens setting changes the budget, up to 10,000 tokens. With many skills installed, Codex shortens descriptions first, then leaves some skills out and shows a warning (Codex Build skills). An optional agents/openai.yaml file sets the display name, the allow_implicit_invocation policy and MCP tool dependencies. It sits in the skill folder, and other tools ignore it, so the skill stays portable.
To connect the EveryInfra remote MCP server in Codex, add a [mcp_servers.<name>] table to ~/.codex/config.toml (Codex MCP docs). A trusted project can use .codex/config.toml. This is a configuration example. We did not run it in a local Codex install:
[mcp_servers.everyinfra]
url = "https://api.everyinfra.com/mcp"
bearer_token_env_var = "EVERYINFRA_API_KEY"
enabled_tools = ["everyinfra_list_capabilities", "everyinfra_call_api", "everyinfra_get_job"]
default_tools_approval_mode = "writes"
tool_timeout_sec = 120Our test data set two of these lines. enabled_tools keeps only 3 tools. At 17:25 SGT the EveryInfra MCP tools/list call returned 25 tools, and some of them create keys, delete keys, change settings or open tickets. A review report needs none of those. tool_timeout_sec is 120 seconds because Codex waits only 60 seconds per tool call by default (Codex MCP docs).
Our sync calls at 17:28 and 17:30 SGT took 87.8 and 88.3 seconds. With the default, Codex gives up before the API answers. default_tools_approval_mode = "writes" asks before any tool that is not marked read-only. everyinfra_call_api charges per call, so the server does not mark it read-only, and Codex asks each time. If you accept that cost, set tools.everyinfra_call_api.approval_mode for that one tool.
Antigravity CLI and Gemini CLI: the folders moved
Google replaced Gemini CLI with Antigravity CLI on June 18, 2026. The Gemini CLI docs site says so at the top of its skills page (Gemini CLI Agent Skills docs). The skill format is the same, and the folders are different. Gemini CLI used ~/.gemini/skills/ for users and .gemini/skills/ for workspaces, with .agents/skills/ as an alias for both.
Antigravity CLI uses .agents/skills/ for workspaces and ~/.gemini/antigravity-cli/skills/ for global skills (Antigravity CLI migration docs). The Antigravity desktop app uses yet another global folder: ~/.gemini/config/skills/ (Antigravity skills docs). This is the only place where we suggest two copies, one per folder.
Antigravity requires only description. If name is missing, it uses the folder name (same docs). Our skill has both fields, so it is not affected. A Google Codelab from September 25, 2026 shows the minimum steps.
Create .agents/skills/<name>/SKILL.md, start agy, list skills with /skills, and ask a question (Google Codelabs). On Reddit, one user asked how to set up Antigravity skills and wanted the folder structure, not a docs link (r/google_antigravity thread). The tables above give that structure.
Antigravity moved MCP servers out of settings.json into a separate mcp_config.json. The global file is ~/.gemini/config/mcp_config.json, and the project file is .agents/mcp_config.json. For remote servers, the address key changed from url or httpUrl to serverUrl (Antigravity CLI migration docs). It also has a tool allow list, enabledTools.
By default it waits 3 minutes per tool call and 5 minutes to connect (Antigravity MCP docs). That is longer than Codex, so our 88-second calls need no timeout change. Configuration example, not run locally:
{
"mcpServers": {
"everyinfra": {
"serverUrl": "https://api.everyinfra.com/mcp",
"headers": { "Authorization": "Bearer <your API key>" },
"enabledTools": ["everyinfra_list_capabilities", "everyinfra_call_api", "everyinfra_get_job"]
}
}
}Gemini skills: Gems go read-only on November 17, and scripts stay offline
On September 30, 2026, Google said skills will replace Gems. Skills are "built entirely on the open, Markdown-native SKILL.md standard", so you can copy skills from other platforms into the Gemini app (Google Workspace Updates, 2026-09-30). An update on October 13 said skills started to roll out in the Gemini app that day, with completion expected by mid-November. The Workspace apps launch is delayed until further notice (Google Workspace Updates, 2026-10-13).
Two Google sources give different Gems dates, so check your account type. The September 30 Workspace post says that on November 17 Gems move to the Settings panel, and users "can continue to create, edit, and use them". Business accounts lose Gems no sooner than March 1, 2027. The help center page for personal accounts says something stricter. For personal Google accounts of people 18 or older, Gems become read-only skills on November 17, 2026. You can see them, but you cannot use or edit them.
On December 17, 2026, Gems are removed from the Gemini app (Gemini Help: About the transition from Gems to skills). So "read-only on November 17" is true for personal accounts only. Workspace business accounts move in March 2027, and education accounts in June 2027. The Google blog agrees with the help center (Google blog: Let skills in Gemini tackle your most repetitive tasks).

Two sentences in the help center decide whether this skill can work in the Gemini app. For now, scripts that require access to the internet are not supported. Scripts cannot perform actions or requests on external websites (Gemini Help: Create & manage skills for Gemini Apps). The same page lists the upload rules.
SKILL.md must be in the root folder, the name must be lowercase with hyphens, and all files together must be 100 MB or less. Plain-text files such as .py, .sh, .md, .json and .csv are fine, but .docx and .xlsx are not. Our skill meets every format rule and imports, but fetch_reviews.py cannot get data there.
Gemini is not alone. The Claude Skills API runs skills in a code execution container with "no network access", so skills "cannot make external API calls". It also adds a name rule: name cannot contain the reserved words "anthropic" or "claude", or XML tags (Claude Skills API guide). In both places, the right split is "skill for the process, connector for the data".
In the Gemini app, connected apps fetch the data. In Claude on the web and in the API, an MCP connector fetches it. The skill body only tells the model which steps to follow and which report to write. The help center also says skills do not yet work with Canvas or Deep Research (About the transition from Gems to skills).
One real round trip: the call the model sends and the data we return
A script and an MCP tool call end at the same request on our side. The card below shows a real MCP tools/call at 17:46:24 SGT. The model called everyinfra_call_api for ClickUp's one-star and two-star Trustpilot reviews from the last 3 months, up to 50 reviews. The API took 27.8 seconds, returned 7 reviews, and charged $0.001389.

The same request as a direct curl call to the data API looks like this. $EVERYINFRA_API_KEY comes from an environment variable and never goes into a file:
curl -s -X POST https://api.everyinfra.com/api/v1/social \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"platform":"trustpilot","action":"reviews","params":{"company":"clickup.com","stars":["1","2"],"date":"last3months","limit":50}}'The catalog lists 24 response fields for trustpilot/reviews (EveryInfra catalog). The skill uses the ones below. We matched each name and meaning against the catalog's response_fields and platform_field_meanings.
| Field | Meaning (from the catalog) | How the skill uses it. |
|---|---|---|
id, url | Review ID and link | Dedupe; link each quote. |
title, text | Title and body | Keyword tagging. |
rating, rating_scale | Stars and scale | Average per source group. |
source | Review source | Split unprompted and invited. |
| Field | Meaning (from the catalog) | How the skill uses it. |
|---|---|---|
verification_level | Verification level (invited or organic) | Cross-check against source. |
language, country | Language and country | Pick the keyword set. |
experience_at, posted_at | Date of the experience; date posted | Cut a time window. |
| Field | Meaning (from the catalog) | How the skill uses it. |
|---|---|---|
reply_text | Company reply | Reply rate. |
author_name | Reviewer display name | Never printed in the report. |
The G2 and Capterra fields suit B2B buying. The first row of g2/reviews has record_type summary with the overall rating, the review count and the most mentioned pros and cons. Single reviews follow. Each capterra/reviews row has pros, cons, sub-ratings for ease of use and support, and switching_reasons. The catalog notes that switching_reasons is the most useful field for competitor analysis (EveryInfra catalog).
Nine calls: how many reviews G2, Capterra, Trustpilot and Amazon return
From 17:25 to 18:31 SGT we sent 31 requests in total. 23 were charged and 8 were not (four 429 responses, one timeout and three empty results), for a total of $0.032794. The table shows the 11 requests behind the software report, including the two that cost nothing.
| SGT | Capability | Target | limit | Reviews back | Time | Charged. |
|---|---|---|---|---|---|---|
| 17:25 | g2/reviews sync | Asana | 100 | 20, plus 1 summary row | — | $0.001389. |
| 17:27 | g2/reviews sync | monday.com | 100 | Timeout, 503 | 90.4 s | $0. |
| 17:28 | g2/reviews sync | ClickUp | 100 | 20, plus 1 summary row | 87.8 s | $0.001389. |
| 17:30 | capterra/reviews | Asana, by name | 100 | 50 | 88.3 s | $0.001389. |
| SGT | Capability | Target | limit | Reviews back | Time | Charged. |
|---|---|---|---|---|---|---|
| 17:32 | capterra/reviews | "monday.com", by name | 100 | 0, refunded | 67.5 s | $0. |
| 17:33 | capterra/reviews | ClickUp, by name | 100 | 100 | 22.3 s | $0.001389. |
| 17:33 | capterra/reviews | monday.com, by product URL | 100 | 97 | 47.3 s | $0.001389. |
| 17:34 | g2/reviews async | monday.com | 100 | 50, plus 1 summary row | 2.1 s to get a job ID | $0.001389. |
| SGT | Capability | Target | limit | Reviews back | Time | Charged. |
|---|---|---|---|---|---|---|
| 17:34 | trustpilot/reviews | asana.com | 200 | 200 | 44.5 s | $0.001389. |
| 17:35 | trustpilot/reviews | monday.com | 200 | 200 | 37.3 s | $0.001389. |
| 17:36 | trustpilot/reviews | clickup.com | 200 | 200 | 42.4 s | $0.001389. |
Three lessons from this table went into the SKILL.md. First, Capterra found nothing for the name "monday.com". Capterra now calls the product "monday AI Work Platform" (Capterra product page). Our API returned 0 rows and refunded the call.
With the product URL, it returned 97 reviews. So step one asks for URLs, not names. Second, sync G2 calls run close to the 85-second sync budget. The monday.com call timed out at 90.4 seconds, and the response said "Not charged" and suggested "mode":"async".
With async mode we had a job ID in 2.1 seconds, and the job returned 50 reviews. Third, the same Asana G2 request returned 20 reviews in sync mode. At 17:48 SGT the skill script sent it again in async mode and got 50, and all 20 earlier reviews were among them. The price is the same, and async returned 2.5 times as many reviews.
The number of reviews per call sets the cost per 1,000 reviews, because these review capabilities charge per call, not per review. Trustpilot returns 200 per call, about $0.0069 per 1,000. Capterra returns 100, about $0.0139. G2 async returns 50, about $0.0278. G2 sync returns 20, about $0.0695.
Amazon returns 13 per product, about $0.1068, so the spread is about 15x. The Amazon count is not a fault. The catalog notes for amazon/reviews say that every country site gives only the featured reviews on the product page (EveryInfra catalog). That is usually 10 to 15 per product, not the full history. We read the same UGREEN power bank at 17:38 and 17:54 SGT. Both reads returned 13 reviews with the same IDs, so these 13 are a stable "featured" set, not a random sample.
There were also four 429 responses. Between 17:37:59 and 17:38:50 SGT we sent calls 7 seconds apart, and four were rejected. Each response named the key's limit of 10 requests per minute, gave retry_after as 1 second, and said "Nothing was charged". Other requests had already used part of that minute.
The script waited retry_after plus the normal gap, and every retry worked. We capped the test key at 10 requests per minute. The account default is 60 a minute, shared by all keys, and it goes up with total top-ups (pricing page). Check your own key's limit in the console.
The biggest trap: split Trustpilot averages by source
Most competitor tables give each company one Trustpilot average. Our data says that number means very little. From 17:34 to 17:44 SGT we read the newest 200 Trustpilot reviews for six companies (Holded has only 48) and grouped them by the source field. Organic means the reviewer found the page alone. BasicLink, InvitationApi, FileUploadInvitation and Shopify all mean the company sent an invitation.
| Company | Organic reviews | Organic average | Invited reviews | Invited average | Gap | Mixed average. |
|---|---|---|---|---|---|---|
| Asana | 199 | 1.90 | 1 | — | — | 1.90. |
| monday.com | 145 | 1.53 | 55 | 4.51 | 2.98 | 2.35. |
| ClickUp | 37 | 2.51 | 163 | 4.89 | 2.38 | 4.45. |
| Holded | 35 | 2.77 | 13 | 4.69 | 1.92 | 3.29. |
| Company | Organic reviews | Organic average | Invited reviews | Invited average | Gap | Mixed average. |
|---|---|---|---|---|---|---|
| Anker | 132 | 2.14 | 68 | 4.62 | 2.48 | 2.98. |
| UGREEN | 21 | 1.29 | 179 | 4.07 | 2.78 | 3.77. |
The mixed average says ClickUp has 4.45 stars and Asana has 1.90, so ClickUp looks far better. Split the groups, and both have low organic averages: 2.51 and 1.90. Most of the gap comes from invitations. 163 of ClickUp's newest 200 reviews came through an invitation link. monday.com shows the same pattern: 145 organic reviews average 1.53 stars, and 55 invited reviews average 4.51.
Hardware brands are no different. 178 of UGREEN's reviews came from automatic Shopify store invitations, and its 21 organic reviews average 1.29 stars. Our reading is simple. People who come on their own often write because something went wrong. People who get an invitation often write right after a purchase.
Mix the two, and the average measures how many invitations a company sends, not what customers think. Limits apply. Each sample is the newest 200 reviews, and the time spans differ a lot. We did not judge whether any review is real, and we do not judge any company's invitation practice.
"The newest 200" also covers very different time windows. Asana's 200 run from January 31, 2022 to October 3, 2026, almost five years. monday.com's run from December 15, 2024 to October 24, 2026. ClickUp's run from April 1, 2026 to October 22, 2026, under seven months. UGREEN's are the shortest: from August 30, 2026 to the day we read them, October 26, 2026.
In under two months UGREEN collected 200 reviews, and 178 came from store invitations. So one sample is two months of new buyers, and another is five years of long-term users. A report should also cut all sources to one window, for example with the Trustpilot parameter date: "last6months". We did not cut the window this time, because we wanted the full picture.
The website alone cannot show the split. Trustpilot's help center says that every company can invite customers for free by sending links. Automatic invitations (BCC email, store integrations, the API) produce reviews labeled "Verified". "Basic Link" invitations produce reviews labeled "Unprompted review" (Trustpilot Help: Trustpilot invitation methods).
We checked ClickUp's page. A five-star review labeled "Unprompted review" on the website is source: BasicLink and verification_level: invited in the API. A one-star review on the same page with the same label is source: Organic and verification_level: not-verified (Trustpilot: ClickUp reviews). The website calls both "Unprompted", and the API keeps them apart.
That is why the skill's Rules say "split by source, never one average". Trustpilot's own business guidelines ask for invitations without bias (Trustpilot Guidelines for Businesses). The guidelines control how companies invite. They do not change the fact that invited reviewers differ from unprompted ones.

Same product, three sites, different complaints
Themes also change from site to site. Below is Asana: 50 reviews from G2 (async), 50 from Capterra and 200 from Trustpilot. We tagged them with the skill's keyword rules v1.1, and one review can hit several themes.
| Theme | G2 (50) | Capterra (50) | Trustpilot (200). |
|---|---|---|---|
| Pricing and billing | 14% | 18% | 43%. |
| Support | 12% | 14% | 46%. |
| Learning curve | 26% | 22% | 5%. |
| Ease of use | 30% | 22% | 7%. |
| Theme | G2 (50) | Capterra (50) | Trustpilot (200). |
|---|---|---|---|
| Automation | 22% | 38% | 7%. |
| Mobile | 6% | 2% | 5.5%. |
Most G2 and Capterra reviewers are team members who use the product. They write about features, such as the learning curve and the automation. On Trustpilot, 46% of Asana reviews mention support and 43% mention pricing or billing. Most of them are about renewals, refunds and locked accounts. monday.com is similar, with 35% pricing and 29% support on Trustpilot.
ClickUp is the exception: automation leads at 39.5%, which fits a page full of invited, active users. The G2 summary rows give G2's own numbers. Asana has 4.4 stars from 14,051 reviews, and "Learning Curve" is its most mentioned con (605 mentions). monday.com has 4.7 stars from 17,294 reviews, and ClickUp has 4.6 from 15,159 (G2: Asana reviews).
So the skill's Limits section says it plainly. Trustpilot reviews of a software company are mostly about billing and support. Read them as a separate signal, and do not merge them with G2 and Capterra.
These are second-version numbers. The first keyword list had the word plan under pricing, with prefix matching. Step 4 of the skill says to read 5 tagged reviews per theme. When we did that, Capterra showed pricing at 58% for Asana, and many of those reviews were about "project planning".
A word count of those 50 Capterra reviews found planning 13 times. The app prefix under mobile also matched appreciate 6 times and approval or approvals 4 times. We switched to whole-word matching and removed plan, app, agent and simple. Asana's Capterra pricing share then fell from 58% to 18%, G2 from 30% to 14%, and Trustpilot from 48.5% to 43%.
Two lessons follow. Keyword rules are cheap and repeatable, but a person must spot-check them. Step 4 is not a formality: on the first run, it fixed a wrong result before it went into a report.
What the finished report looks like
Step 5 of the skill sets the report layout. Here is the first table, filled with this run's data: reviews read, average stars and cost for each product on each site. The three sites stay in separate columns, with no overall average. The Trustpilot cell shows the mixed average and the organic and invited groups, as the Rules require.
| Product | G2: reviews / average | Capterra: reviews / average | Trustpilot: reviews / mixed (organic / invited) | API fee. |
|---|---|---|---|---|
| Asana | 50 / 4.38 | 50 / 4.76 | 200 / 1.90 (1.90 / only 1 review) | $0.004167. |
| monday.com | 50 / 4.64 | 97 / 4.57 | 200 / 2.35 (1.53 / 4.51) | $0.004167. |
| ClickUp | 20 / 4.22 | 100 / 4.60 | 200 / 4.45 (2.51 / 4.89) | $0.004167. |
The third part of the report lists the top three complaints per product, each with a short quote and its link. We took titles of recent organic one-star and two-star Trustpilot reviews. A title is one line that the reviewer wrote, and no reviewer names appear. For Asana: "Ruthless company" on October 3, 2026, "Forever free doesn't mean forever free" on October 1, and a September 28 review that calls the cancellation policy "sneaky".
For monday.com: three reviews on October 24, October 22 and October 21, 2026, and two of the titles name "customer service". For ClickUp: the October 20, 2026 review "Inflexible, manual "subscription" model" about a 30-day notice to cut seats. An October 5 review describes a locked account after payment. These titles match the theme table. On Trustpilot, all three companies get the most complaints about billing and support, not features.
The last part of the report lists the limits. The sample is the newest batch on each site. Asana has no invited group on Trustpilot to compare. Keyword list v1.1 was spot-checked with only 5 reviews per theme.
We did not let a model write the numbers. Scripts computed every number in the table from the API responses. The model did two jobs. It read samples to find keyword errors in step 4, and it laid out the tables and quotes in step 5. The first job works well only if you ask the model to log each change in the report. The second job almost never goes wrong.
Make it weekly: where scheduled runs can live
The natural rhythm for competitor reviews is once a week, on Monday. Here is where each product can run this skill on a schedule with network access. Claude Code desktop scheduled tasks run on your machine and read ~/.claude/skills/. Cloud scheduled tasks start a fresh cloud session each time. They do not read the local folder. They use only skills enabled in your claude.ai account, or skills in the repo's .claude/skills/ (Claude Code skills docs).
At DevDay on September 29, 2026, OpenAI launched Codex Cloud, which runs tasks while your laptop is closed (DevDay 2026 community recap). The Codex docs do not clearly say that cloud tasks read .agents/skills from the repo. We did not test it, so we draw no conclusion. The Gemini app has schedules that can run a task with a chosen skill (Create & manage skills for Gemini Apps). But as noted above, skill scripts there cannot reach the internet.
Here is the yearly math. One 9-call software report per week is 468 calls a year, or $0.650052 in API fees. A weekly 5-call hardware report adds 260 calls and $0.36114. In our test, the slowest sync call took 88 seconds. With the 7-second gaps and about 5 minutes for the G2 async job, one 9-call report takes under 10 minutes.
A key with 10 requests per minute is enough. If the same key also serves other jobs, treat 429 as normal and retry. Claude Code 2.1.310, released on October 23, 2026, brought the Monitor tool to more deployment types. You can use it to watch a long async job instead of a sleeping script (Claude Code changelog).
Where keyword tagging misses: non-English and hardware reviews
Keywords depend on language. We asked for monday.com's Spanish Trustpilot reviews with lang: "es". A limit of 200 returned 81 reviews, and the newest was from December 28, 2023. With English keywords, 80 of the 81 reviews got no theme. With the skill's Spanish list saas_es, the untagged count fell to 45.
ClickUp has only 10 Spanish reviews. Holded, a Spanish accounting tool, has 100 reviews on Capterra, and about 76 read as Spanish. English rules left 74 untagged, and Spanish rules left 21. Holded also shows a coverage gap on Trustpilot.
At 17:44 SGT, a call without lang returned 48 reviews, all marked en. At 18:29 and 18:30 SGT, calls with lang: "es" and language: "es" both returned 0 rows and were refunded. The Spanish Trustpilot site shows 2,444 reviews for Holded (Trustpilot Spain: Holded). So this run did not get Holded's Spanish reviews, and a report must say "Trustpilot sample: 48 English reviews only".
Hardware reviews fail in a different way. For three 20,000 mAh power banks (Anker, UGREEN, INIU), Amazon US returned 13 featured reviews each, with averages of 4.92, 4.92 and 4.62 stars. These are far above the two brands' organic Trustpilot averages of 2.14 and 1.29, because Amazon's featured reviews lean toward helpful, positive ones. On Trustpilot, 26% of Anker reviews mention durability problems, such as a unit that broke or stopped working. None of that shows in Amazon's 13.
The hardware keyword list also covers Trustpilot poorly: 101 of Anker's 200 and 127 of UGREEN's 200 got no theme. Most of them are about shipping, returns and support, which the hardware list does not cover. We did not change the list to make the numbers look better. The report states the untagged counts.
The context math: 31,581 characters of MCP tools, 363 characters of skill
People often compare skills and MCP, but they use context in different ways. At 17:25 SGT we read the EveryInfra MCP tools/list. The 25 tool definitions total 31,581 characters, or about 7,895 tokens at 4 characters per token. 11 tools are marked read-only and 5 are marked destructive.
The three tools this skill needs, everyinfra_list_capabilities, everyinfra_call_api and everyinfra_get_job, total 3,314 characters. At session start, the skill adds only its name and description: 363 characters, about 91 tokens. The full SKILL.md has 3,426 characters, and it loads only when used.
These numbers have limits. Claude Code turns on MCP tool search by default, and it loads only tool names and server instructions at session start. So in Claude Code, 25 tools do not cost 7,895 tokens up front (Claude Code MCP docs). For other hosts, check their docs. Codex and Antigravity both have tool allow lists (enabled_tools, enabledTools).
Cut 25 tools to 3, and the definitions fall from 31,581 to 3,314 characters. The MCP spec treats readOnlyHint and destructiveHint as hints to the client, not as security guarantees (MCP specification: Tools). An allow list is more reliable than hints. Our advice: let the skill own the process and the report format, and open only the 3 data tools in MCP. When you use both, the skill should say "use everyinfra_call_api, not other tools".
What one report costs
We priced the API side from the catalog price_usd. In the catalog read on October 26, 2026, g2/reviews, capterra/reviews, trustpilot/reviews and amazon/reviews each cost $0.001389 per call. None of them has a per-row pricing mark. One call returns up to max_limit reviews: 100 for G2, Capterra and Amazon, and 200 for Trustpilot (EveryInfra catalog). A software report on 3 competitors across 3 sites is 9 calls: 9 × $0.001389 = $0.012501.
The charges came to exactly $0.012501, a zero difference. The report read 967 reviews, about $0.0129 per 1,000. A hardware report on 3 power banks is 3 Amazon calls plus 2 Trustpilot calls: 5 × $0.001389 = $0.006945 for 439 reviews. Timeouts, empty results and 429 responses cost nothing, so retries do not grow the bill.
| Item | Unit price | Calls | Amount | Notes. |
|---|---|---|---|---|
| Software report (G2 + Capterra + Trustpilot) | $0.001389 per call | 9 | $0.012501 | 967 reviews. |
| Hardware report (Amazon + Trustpilot) | $0.001389 per call | 5 | $0.006945 | 439 reviews. |
| Software report every week for a year | $0.001389 per call | 468 | $0.650052 | Same 9 calls each week. |
| All real calls for this article | — | 31 requests, 23 charged | $0.032794 | Includes 1 amazon/search call ($0.002236). |
The AI product side is a subscription, not a per-call fee. We read these public prices on October 26, 2026. Claude Pro is $20 a month, or $17 a month billed yearly, and includes Claude Code (Claude pricing). ChatGPT Plus is $20 a month (OpenAI Help). On Plus, Codex works in the CLI, the IDE extension and the web (Codex pricing). Google AI Pro is $19.99 a month and includes entry-level Antigravity usage (Google AI plans).
Next to these plans, the API fee is small change. The real cost is the plan usage that the model spends to read 967 reviews. No vendor publishes that per review, and we did not measure it, so we give no number.
A bug in the script: "finalizing" is not done
The skill script showed a bug on its first real run, and the lesson is worth its own section. At 17:48 SGT, fetch_reviews.py sent the Asana G2 request in async mode and polled the job. It treated the first status other than running or queued as the end. At 306 seconds it read finalizing, wrote 0 rows and stopped. At 17:55 SGT we checked the same job by hand.
Its status was succeeded, and all 51 rows (50 reviews and 1 summary row) were there. The fix: treat only succeeded, failed, canceled and expired as final, and keep waiting on every other status. This kind of bug hides well inside a skill. When the model sees "0 rows", it writes "no new reviews on G2" without a second thought. So step 2 of the skill says to check the counts, write 0 into the report, and never read 0 as "no reviews".
The responses state the error and charge rules clearly, and the script only needs to read them:
- 429:
error.codeisrate_limited, withretry_afterin seconds and "Nothing was charged". Wait and retry. - 503 timeout:
error.codeistimeout, andbilling.chargedis false. Switch to"mode":"async"or lowerlimit. - Empty result:
countis 0, andrefund.statusissucceeded. The charge comes back automatically. - Async: 202 returns
job_idandpoll_url. The charge happens at submit. PollGET /api/v1/jobs/{job_id}until a final status.
What this skill cannot do, and what to watch
Here is what the skill cannot do, or must do with care. In the Gemini app and the Claude Skills API, skill scripts cannot reach the network, so a connector or MCP must fetch the data. Claude Code cloud sessions and cloud scheduled tasks do not read the local ~/.claude/skills/. Enable the skill in your claude.ai account, or commit it to the repo. In the Claude Skills API, name cannot contain "claude" or "anthropic".
Our name is fine, but a skill named claude-review-helper would fail to upload. Amazon gives only the featured reviews on the product page, so do not compute a "negative review rate" from it. Do not compare companies on Trustpilot without the source split. Write one keyword list per language and per category, and put coverage in the report.
On law and platform rules, we describe data methods only and give no legal advice. The US Federal Trade Commission announced a final rule on August 14, 2024. It bans fake reviews, bought reviews, and rewards that depend on a positive review (FTC press release; 16 CFR Part 465). The rule is about how companies get reviews.
Reading public reviews for competitor analysis is a different activity. Still, keep reviewer names out of reports and keep quotes to a line or two. The skill's Rules already say so.
Industry updates
- September 29, 2026, OpenAI DevDay: plugins became the shared way to ship work to ChatGPT and Codex. One plugin can carry skills and MCP servers, and the submission process got review tracking (DevDay 2026 community recap; OpenAI DevDay recap). What it means for you: this skill and the EveryInfra MCP server can ship as one plugin. It also installs in ChatGPT on the web (ChatGPT Skills & Plugins).
- September 30, 2026, Google: skills replace Gems. The Gemini app rollout started on October 13. Gems on personal accounts become read-only on November 17 and disappear on December 17 (Workspace Updates; Gemini Help). What it means for you: if you use Gems for competitor summaries, export the instructions and files before December 17. Data fetches still cannot run inside Gemini app skills.
- October 19 to October 23, 2026, three Claude Code releases. Version 2.1.304 (October 19, 2026) sends the skill list again after compaction, and
/reload-skillsnow sends only new or changed skills. Version 2.1.309 (October 22, 2026) fixed same-named skills in--add-dirfolders, which now run as<folder>:<name>. Version 2.1.310 (October 23, 2026) brought the Monitor tool to more platforms (Claude Code changelog). What it means for you: in a long session that runs many reports, skills no longer drop out after compaction. - October 14, 2026, GPT-5.5 retired from Codex with ChatGPT sign-in, with GPT-6.1 Sol and other models in its place (Codex pricing). What it means for you: the skill steps stay the same, but redo the step-4 spot check. With the same keyword rules, a new model may pick different quotes.
- September 25, 2026, Google published an Antigravity CLI skills Codelab. It uses
.agents/skillsand installs third-party skills withnpx skills add(Google Codelabs; vercel-labs/skills). What it means for you:.agents/skillsis becoming the shared project folder across tools, so put new skills there first.
When these findings do not hold
The samples are small, so the limits come first. Theme shares come from the newest 20 to 200 reviews on each site, not all reviews, and the numbers will move next week. "Organic reviews score 1.9 to 3.0 stars lower" comes from one read of five companies. Asana has no comparable invited group, so it is not part of that range. Keyword rules v1.1 were spot-checked with 5 reviews per theme.
The word "support" also matches feature text such as "supports multiple views", and we did not measure that error. The folder paths and behavior of the four products come from the vendors' own docs, read on October 26, 2026. The Codex and Antigravity MCP configs are configuration examples that we did not run. On our machine we tested the skill scripts, the spec validator and the EveryInfra API. If your competitors are not on G2, Capterra, Trustpilot or Amazon, swap in the matching catalog capability, such as google_play/reviews, app_store/reviews or yelp/reviews.
FAQ
What does "skill.md must start with yaml frontmatter (---)" mean? Source: Google autocomplete "skill.md must start with yaml frontmatter (---)", read on Oct 26, 2026. The first line of SKILL.md must be ---. The Claude Code docs say it reads frontmatter only when the opening --- is on the first line. Otherwise the whole file is the body. If the YAML does not parse, the skill still loads, but with no fields (Claude Code skills docs). Run agentskills validate from skills-ref to catch this early.
What is the codex skills location? Source: Google autocomplete "codex skills location" and "codex skills folder". In a repo, use .agents/skills, from the working folder up to the repo root. For one user, use $HOME/.agents/skills. For the machine, use /etc/codex/skills. Codex follows symlinks (Codex Build skills).
How do claude code skills reduce token usage? Source: Google autocomplete "claude code skills to reduce token usage". At session start a skill adds only its name and description, 363 characters for this one. The body loads only when used. Keep the description short and put the key use first. For skills you rarely use, set "name-only" in skillOverrides (Claude Code skills docs). Put long reference text in references/, not in the body.
How do I fix "skill.md description cannot contain xml tags"? Source: Google autocomplete "skill.md description cannot contain xml tags". The Claude Skills API and claude.ai uploads check this. Neither name nor description can contain XML tags, and name cannot contain "claude" or "anthropic" (Claude Skills API guide). Replace any <...> text in the description with plain words.
Can agent skills call outside APIs in the Gemini app? Source: Google autocomplete "agent skills claude" and "gemini skills", and the Gemini Help text. Not today. The help center says scripts that need the internet are not supported. Scripts cannot send requests to outside websites (Gemini Help). Use Gemini's connected apps for the data, and keep only steps and formats in the skill.
Is it safe to install claude code skills from GitHub? Source: Google autocomplete "claude code skills github" and "claude code skills marketplace". Skills can carry scripts, so read SKILL.md and scripts/ before you install. Gemini CLI shows a security prompt when it installs a skill (Gemini CLI Agent Skills docs). Example skills from Anthropic and OpenAI are at anthropics/skills and openai/skills. OpenAI also explains how to test skills with evals (Testing Agent Skills Systematically with Evals).
Further reading
- Try the review APIs: Trustpilot API, Trustpilot reviews, G2 API, G2 reviews, Capterra reviews, Amazon reviews.
- Connect with MCP: EveryInfra MCP server. For your first call, see the quick start; for prices, see pricing.
- Related article: Competitor reviews for 30 companies on G2 and Trustpilot.
- Related article: How to turn review data into a paid product.
- Related article: How to sell web change monitoring.
References
- Extend Claude with skills, Anthropic (Claude Code docs), read 2026-10-26, https://code.claude.com/docs/en/skills
- Agent Skills Specification, agentskills.io, read 2026-10-26, https://agentskills.io/specification
- skills-ref reference validator, agentskills (GitHub), 0.1.1, run 2026-10-26, https://github.com/agentskills/agentskills/tree/main/skills-ref
- Build skills, OpenAI (Codex docs), read 2026-10-26, https://developers.openai.com/codex/build-skills
- Model Context Protocol, OpenAI (Codex docs), read 2026-10-26, https://developers.openai.com/codex/mcp
- Agent skills, Google Antigravity Docs, read 2026-10-26, https://antigravity.google/docs/skills/
- Migration - Antigravity CLI, Google Antigravity Docs, read 2026-10-26, https://antigravity.google/docs/cli/gcli-migration
- MCP, Google Antigravity Docs, read 2026-10-26, https://antigravity.google/docs/mcp
- Agent Skills, Gemini CLI docs, read 2026-10-26, https://geminicli.com/docs/cli/skills/
- Introducing skills in the Gemini app and Workspace, plus what's next for Gems, Google Workspace Updates, 2026-09-30, https://workspaceupdates.googleblog.com/2026/09/skills-gemini-app-workspace.html
- An update on the launch of skills in the Gemini app and Workspace, Google Workspace Updates, 2026-10-13, https://workspaceupdates.googleblog.com/2026/10/an-update-on-launch-of-skills-in-gemini-app-and-workspace.html
- Let skills in Gemini tackle your most repetitive tasks, Google blog, 2026-09-30, https://blog.google/products-and-platforms/products/gemini/automate-tasks-with-skills/
- Create & manage skills for Gemini Apps, Gemini Help, read 2026-10-27, https://support.google.com/gemini/answer/17094296
- About the transition from Gems to skills, Gemini Help, read 2026-10-27, https://support.google.com/gemini?p=gems_to_skills
- Using Agent Skills with the API, Anthropic (Claude docs), read 2026-10-26, https://docs.claude.com/en/api/skills-guide
- Connect Claude Code to tools via MCP, Anthropic (Claude Code docs), read 2026-10-26, https://code.claude.com/docs/en/mcp
- Claude Code changelog, Anthropic, versions 2.1.304 to 2.1.310 (2026-10-19 to 2026-10-23), https://code.claude.com/docs/en/changelog
- Equipping agents for the real world with Agent Skills, Anthropic, 2025-10-16, https://www.anthropic.com/research/equipping-agents-for-the-real-world-with-agent-skills
- EveryInfra data catalog GET /api/v1/social/catalog, EveryInfra, read 2026-10-26 17:25 SGT, https://api.everyinfra.com/api/v1/social/catalog
- EveryInfra MCP (tools/list, tools/call), EveryInfra, called 2026-10-26 17:25 and 17:46 SGT, https://api.everyinfra.com/mcp
- monday AI Work Platform product page, Capterra, read 2026-10-26 (script access returns 403; read with a browser engine), https://www.capterra.com/p/147657/monday-com/
- Trustpilot invitation methods, Trustpilot Help Center, read 2026-10-26, https://help.trustpilot.com/s/article/Trustpilot-invitation-methods?language=en_US
- ClickUp Reviews, Trustpilot, read 2026-10-26 (script access returns 403; read with a browser engine), https://www.trustpilot.com/review/clickup.com
- Guidelines for Businesses, Trustpilot, read 2026-10-26, https://corporate.trustpilot.com/legal/for-businesses/guidelines-for-businesses
- Asana Reviews, G2, read 2026-10-26 (script access returns 403; read with a browser engine), https://www.g2.com/products/asana/reviews
- Tools, Model Context Protocol specification 2025-06-18, read 2026-10-26, https://modelcontextprotocol.io/specification/2025-06-18/server/tools
- Plans & pricing, Claude, read 2026-10-26, https://claude.com/pricing
- What is ChatGPT Plus?, OpenAI Help Center, read 2026-10-26, https://help.openai.com/en/articles/6950777-what-is-chatgpt-plus
- Pricing, OpenAI (Codex docs), read 2026-10-26, https://developers.openai.com/codex/pricing
- Google AI Pro & Ultra, Google, read 2026-10-26, https://gemini.google/subscriptions/
- How to use AI Agent Skills (with Antigravity CLI), Google Codelabs, 2026-09-25, https://codelabs.developers.google.com/antigravity/how-to-create-agent-skills-for-antigravity-cli
- How do you actually set up Antigravity agent skills?, Reddit r/google_antigravity, read 2026-10-26, https://www.reddit.com/r/google_antigravity/comments/1qvrxxx/how_do_you_actually_set_up_antigravity_agent/
- Federal Trade Commission Announces Final Rule Banning Fake Reviews and Testimonials, FTC, 2024-08-14, https://www.ftc.gov/news-events/news/press-releases/2024/08/federal-trade-commission-announces-final-rule-banning-fake-reviews-testimonials
- 16 CFR Part 465, Rule on the Use of Consumer Reviews and Testimonials, eCFR, read 2026-10-26, https://www.ecfr.gov/current/title-16/chapter-I/subchapter-D/part-465
- Create custom subagents, Anthropic (Claude Code docs), read 2026-10-26, https://code.claude.com/docs/en/sub-agents
- DevDay 2026 announcements and developer resources, OpenAI Developer Community, 2026-09-29, https://community.openai.com/t/devday-2026-announcements-and-developer-resources/1402006
- DevDay 2026 Recap, OpenAI, 2026-09-29, https://openai.com/index/devday-2026-recap/
- Skills & Plugins, ChatGPT Learn, read 2026-10-26, https://learn.chatgpt.com/docs/skills-and-plugins
- vercel-labs/skills, GitHub, read 2026-10-26, https://github.com/vercel-labs/skills
- anthropics/skills, GitHub, read 2026-10-26, https://github.com/anthropics/skills
- openai/skills, GitHub, read 2026-10-26, https://github.com/openai/skills
- Testing Agent Skills Systematically with Evals, OpenAI Developers blog, 2026-01-22, https://developers.openai.com/blog/eval-skills
- Holded reviews (Spanish site), Trustpilot, read 2026-10-26, https://es.trustpilot.com/review/holded.com
Reference BL-54