Agent skill

X Algorithm Post Writing

by carson2222 in carson2222/skills

Writes and reviews X posts, threads and replies using what the open-sourced For You ranking system rewards, and explains why a post may have underperformed.

Apache-2.0Auto-check passedWriting & Content

Install X Algorithm Post Writing

skills CLI
$ npx skills add carson2222/skills --skill x-algorithm -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install carson2222/skills x-algorithm --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/carson2222/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/x-algorithm .claude/skills/x-algorithm && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
x-algorithm
GitHub stars
113
Token cost
~3.8k tokens
SKILL.md length
1,908 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

Writes and reviews X posts, threads and replies using what the open-sourced For You ranking system rewards, and explains why a post may have underperformed.

  • Works in 9 steps: Optimize for diverse engagement, not… → The hook has to stop the scroll → Longer is fine if it earns the dwell → …
  • Drafting an X post, thread, reply or quote post
  • SKILL.md covers How the Feed Actually Works, The 19 Actions That Define…, What This Means For How You… and What Will Quietly Kill Your Post, plus 8 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

The skill is built on the open-sourced X recommendation system and sets aside growth folklore. It explains the feed pipeline of sources, filters, scoring and selection, and the two routes into a feed: Thunder, the in-network store for followers, and Phoenix retrieval, which embeds your post and a user's engagement history to find out-of-network matches. A Grok-based transformer then predicts about 19 engagement actions per candidate, and a weighted scorer combines them, with author diversity decay and out-of-network down-weighting.

A table lists the positive signals and what each implies for writing, covering likes, replies, reposts, quotes, image expands, link and profile clicks, video quality views that count only past a minimum duration, and the share variants. The excerpt ends before the negative signals. The description lists uses such as drafting or rewriting a post, thread, reply or quote, planning a content strategy, and debugging a post that flopped.

When your agent uses it

  • Drafting an X post, thread, reply or quote post
  • Rewriting a draft so it targets the signals the ranker rewards
  • Working out why a post performed poorly
  • Understanding how For You retrieval and ranking work

Example prompts

  • “Write an X thread on why our onboarding emails got a better open rate.”
  • “Review this draft post and tell me which engagement signals it is likely to earn.”
  • “Why did my last post flop? Here is the text and the image I attached.”
  • “Explain how Thunder and Phoenix decide whether my post reaches people who do not follow me.”

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Optimize for diverse engagement, not just likes
  2. The hook has to stop the scroll
  3. Longer is fine if it earns the dwell
  4. Make it quotable, not just likeable
  5. Convert viewers to followers
  6. Avoid anything that risks block / mute / report / not_interested
  7. Video must be substantive
  8. Images: thumbnail-test everything
  9. Make content shareable, not just consumable

What it can do on your machine

Read from SKILL.md and the folder at commit c29af03. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

X Algorithm Post Writing loads about 3.8k tokens when it runs. Until then it costs about 164 tokens; SKILL.md has 1,908 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~164
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from carson2222/skills at commit c29af03, republished under its Apache-2.0 licence (© carson2222). 1,908 words, ~3,809 tokens.

Download SKILL.mdSave it as .claude/skills/x-algorithm/SKILL.md (or your agent's skills folder).
name
x-algorithm
description
Write X (Twitter) posts that the For You algorithm actually rewards. Grounded in the open-sourced X recommendation system — the Grok-based transformer ranker, Phoenix retrieval, Thunder in-network store, and Grox content-understanding pipeline. Use when the user wants to write a post, thread, reply, or quote; plan a content strategy; review or rewrite an existing draft; debug why a post flopped; or understand how the For You ranking works. Triggers include "write a tweet", "X post", "twitter post", "thread", "viral tweet", "improve this post", "why didn't this perform", "what to post", "x algorithm", "for you feed", "twitter algorithm".
license
Apache-2.0

X Algorithm: Writing Posts That Get Ranked

A single source of truth for writing on X, derived directly from the open-sourced For You algorithm. No folklore, no growth-hack myths — only what the actual ranker, retrieval system, and content classifiers reward or punish.

How the Feed Actually Works

Every For You impression is the output of this pipeline:

Sources                Filters               Scoring                 Selection
─────────              ───────               ───────                 ─────────
Thunder (in-network)   age, vf, muted        Phoenix transformer     top-K by score
Phoenix (OON ANN)      blocks, dedupe        → P(19 actions)         author diversity
ads / wtf / prompts    seen/served           weighted sum            ads blender
                       subscription gate     OON multiplier

Two ways into a user's feed:

  1. Thunder (in-network) — they follow you. Sub-millisecond lookup. Always preferred.
  2. Phoenix retrieval (out-of-network) — a two-tower model embeds your post and the user's engagement history into the same space, then ANN-searches. You land here when your content lives in the topical neighborhood of posts the user recently engaged with.

Then Phoenix ranking (a Grok-based transformer) predicts probabilities for ~19 engagement actions per candidate, the Weighted Scorer combines them, Author Diversity decays repeated authors, OON Scorer down-weights out-of-network, and the top-K wins.

There are no hand-engineered relevance features anymore. The transformer learns from the user's UserActionSequence (their recent aggregated actions). That is the entire feature set.

The 19 Actions That Define Your Score

The ranker predicts a probability for each. Final score = Σ(weight × P(action)).

Positive signals (you want these)
ActionWhat it isWhy it matters
favoritelikeBaseline engagement.
replysomeone repliesStrong — replies have their own weight.
retweetrepostStrong distribution signal.
quotequote postAmplification + a separate quoted_click and quoted_vqv reward chain.
photo_expandtap to expand imageImage must be intriguing at thumbnail size.
clicktap a link/postHeadline/curiosity gap matters.
profile_clicktap your name/avatarYour identity made them curious.
vqv"video quality view"Only counted if video_duration_ms > MIN_VIDEO_DURATION_MS. No 2-second loops.
sharenative share menu
share_via_dmshared in DMIndependent signal — "I want my friend to see this".
share_via_copy_linkcopied linkSave-worthy content.
dwelldwelled at allBinary. The hook has to land.
cont_dwell_timecontinuous dwell durationLonger linger = more weight.
cont_click_dwell_timedwell after clicking into postReward for delivering on the click.
follow_authorviewer follows youOne of the strongest positive signals.
Negative signals (these subtract from your score)
ActionEffect
not_interestedManual "not interested" tap.
block_authorBlock.
mute_authorMute.
reportReport.
not_dwelledScroll-past with no dwell. Heavy penalty. Most posts die here.

The negative weights are real and subtractive — a post that gets scrolled past by many users actively pushes its own score down. "No engagement" is not neutral; not_dwelled is negative.

What This Means For How You Write

1. Optimize for diverse engagement, not just likes

The model weights 19 actions. A post that earns one reply and one share and one quote outperforms a post with three likes. Write things people want to reply to, quote, save, or DM.

2. The hook has to stop the scroll

Every scroll-past is a not_dwelled negative. The first visible line (and the thumbnail of any media) is the entire battle. If the user doesn't dwell, you don't just get zero — you go negative.

3. Longer is fine if it earns the dwell

cont_dwell_time is a continuous weight. A post people read for 12 seconds beats one read for 2. But that only works if the hook earns the read — pad-for-length kills you on not_dwelled.

4. Make it quotable, not just likeable

Quotes trigger quote_score + downstream quoted_click_score + quoted_vqv_score. A take that begs for "this, but also…" outperforms a self-contained one.

5. Convert viewers to followers

follow_author is heavily weighted. Every post should make the case for following you — clear identity, distinct voice, on-niche signal. Profile + pinned post matter because profile_click also scores.

6. Avoid anything that risks block / mute / report / not_interested

Rage-bait, slop, misleading hooks, engagement farming — these maximize short-term click but blow up not_interested/mute, which are weighted negatively. Net is often negative.

7. Video must be substantive

vqv only counts when video duration exceeds the minimum threshold. Sub-threshold loops literally cannot earn the video reward. There's also a quoted_vqv reward when your video is quoted — make videos that beg to be quoted.

8. Images: thumbnail-test everything

photo_expand is its own positive signal. The thumbnail has to make someone tap. Crops, faces, contrast, clear focal point.

9. Make content shareable, not just consumable

share, share_via_dm, share_via_copy_link are three independent rewards. Frameworks, lists, screenshots of useful info, before/after, "saved this for later" content — these all score.

What Will Quietly Kill Your Post

These run before scoring — if any fires for a viewer, your post is dropped from their candidate set entirely.

FilterTriggers whenImplication
AgeFilterPost older than thresholdTimeliness matters. Posts decay out of consideration.
MutedKeywordFilterYour text contains a user's muted keywordCommon words (e.g. "crypto", "AI", politics terms) lock you out of muted audiences.
AuthorSocialgraphFilterViewer blocked/muted youPermanent for that viewer.
VFFilter (visibility)Safety classifier marks DropSpam, violence, gore, PTOS violations → invisible everywhere.
IneligibleSubscriptionFilterPaywalled post, viewer not subscribedLocks paid content to subscribers only.
PreviouslySeenPostsFilterViewer already saw itOne impression per viewer.
PreviouslyServedPostsFilterAlready served this sessionSame.
RepostDeduplicationFilterMultiple reposts of same contentMass-repost manipulation collapses.
DedupConversationFilterMultiple branches of one threadOnly one branch shown.
SelfpostFilterYou're the viewerNever see your own.

Practical implications:

  • A "controversial topic hook" is also a "muted keyword" landmine. Calibrate.
  • One conversation, one branch — replying 10 times to your own thread doesn't multiply reach.
  • Mass-rebloging your own old content gets collapsed.

Content Understanding (Grox)

Beyond the ranker, a separate grox/ pipeline runs VLM-based classifiers on posts:

  • Banger initial screen — a vision-language model scores quality_score (0–1), threshold 0.4 for positive. Also emits slop_score and has_minor_score, plus taxonomy categories.
  • Post safety screen deluxe — VLM safety pass for PTOS policy.
  • Spam detection — aggressive on accounts <1K followers replying. If you reply-spam from a small account, the spam classifier flags you and the in_reply_user_follower_count bucket determines logging.
  • PTOS policy / safety_ptos_category — policy enforcement.
  • Multimodal post embedder (v2 / v5) — multimodal embeddings used downstream.

So a post is also being judged on visual + textual quality by an LLM. AI-generated slop is detected and scored against you. Posts with minors flagged. Topical categorization happens automatically — you don't pick the category, the classifier does.

Distribution Mechanics

In-network vs Out-of-network

Out-of-network candidates are multiplied by OON_WEIGHT_FACTOR (< 1.0) in OONScorer / RankingScorer. In-network always wins on equal scores. The single highest-leverage growth move on X remains: be followed by people in the audience you want to reach.

Two exceptions where OON penalty softens:

  1. Topic match — if the viewer follows topics that match the post, TopicOonWeightFactor replaces the regular OON factor (typically higher → easier OON reach).
  2. New users — eligible new users (account younger than a threshold AND following at least NEW_USER_MIN_FOLLOWING) get NEW_USER_OON_WEIGHT_FACTOR instead.

Implication: Topical, categorizable posts travel further OON than generic ones. The Phoenix two-tower retrieval needs a coherent neighborhood to embed your post into.

Mutual follow Jaccard (MinHash)

MutualFollowJaccardHydrator computes the Jaccard similarity between the viewer's follow graph and the author's follow graph via MinHash (≥256 hashes). Authors whose graph overlaps the viewer's get a stronger signal. Tribe matters. Posts from authors followed by accounts the viewer also follows have a structural advantage.

Show full SKILL.md (752 more words)Show less
Author diversity decay

AuthorDiversityScorer ranks by score, then for each subsequent post by the same author, multiplies score by decay_factor^position + floor. Burst-posting collapses your own scores within one feed render. Space posts out. Five posts in five minutes is worse than five posts over a day.

Engagement caching window

EngagementCountsHydrator caches like/reply/repost/quote counts:

  • New tweets (<30 min old): 5-min TTL
  • Older: 10-min TTL

The first ~30 minutes set the trajectory the rest of the system rides on. Early engagement compounds. Post when your audience is online.

A Pre-Post Checklist

Before you publish, gate against this list:

  1. Hook in the first visible line — would a stranger stop scrolling? If not, rewrite. (not_dwelled is negative.)
  2. One specific, on-niche idea — needed for Phoenix retrieval to embed you in a useful neighborhood.
  3. Replyable / quotable — does it have a hook for a take or a "yes, but" — or is it self-contained and dead-end?
  4. Shareable — would someone DM this or copy the link?
  5. Image / video tested at thumbnail size — crop, focal point, contrast. Videos longer than the min-duration threshold.
  6. No muted-keyword landmines for the audience you're targeting.
  7. No slop / clickbait that risks not_interested, mute, report.
  8. Identity intact — would profile_click reward a clear "follow this account because…" payoff?
  9. Timing — is your audience awake? First 30 min decides the rest.
  10. Spacing — not stacked on top of your own recent posts.

Replies, Quotes, Threads

  • **Replies from <1K-follower accounts** are aggressively spam-screened. Quality over quantity. One thoughtful reply > ten "great post 🔥".
  • A separate reply-ranking model decides reply order on conversations. Same content rules apply at higher selectivity.
  • Quote posts are doubly valuable to you: they trigger the quote-side rewards (quote, quoted_click, quoted_vqv) for the quoted author. Quote good posts in your niche — it's a positive signal for them AND puts you in front of their audience.
  • Threads: only one branch of a conversation is shown per viewer (DedupConversationFilter). Posting a 10-reply self-thread doesn't multiply impressions of the same conversation. Lead post must stand alone.

When the User Asks "Why Did This Flop?"

Walk through, in order:

  1. Filter dropouts — too old? muted keyword? safety flag? subscription-gated?
  2. Hook / dwell — would a stranger stop on the first line? If not, every scroll-past pushed score down.
  3. OON viability — was it topical and embedable, or generic and floating?
  4. Author diversity — did you post 4 other times in the same window?
  5. Negative signals — did the framing invite mutes / not-interested?
  6. Visual quality — would the banger initial screen score this >0.4? Any AI-slop tells?
  7. In-network base — do you have followers in the audience that should care? OON is hard. The followers route is the moat.
  8. Timing — first 30 min set the curve. Was anyone online?

Anti-Patterns The Algorithm Punishes

  • Engagement-bait questions ("agree?", "RT if you agree") — they trigger not_interested from sophisticated users; net negative.
  • Reply-guy spam from small accounts — flagged by spam classifier.
  • Posting the same idea 5x in a day — author diversity decay + repost dedup.
  • 2-second meme loops as primary video format — sub-threshold for vqv.
  • Threaded mega-posts where the first tweet is just "🧵" — viewer never dwells past it.
  • AI-generated slop with no edit — banger screen's slop_score flags it.
  • Hostile / dunking content — short-term click, long-term mute/block/report.

What's NOT In The Algorithm (Despite Folklore)

  • No link penalty as a hard rule. Links are scored via click_score and cont_click_dwell_time — if people click and dwell, you're rewarded.
  • No follower-count multiplier. The transformer doesn't see your follower count as a feature. Reach is driven by predicted engagement, mutual-follow Jaccard, in-network membership, and topic match.
  • No "post X times per day" rule. Author diversity decays within a single feed render, not across days.
  • No "best time to post" hardcoded. The 30-min engagement-cache window is real, but "when" depends entirely on when your specific audience is online.

How To Use This Skill

When the user asks you to write or improve a post:

  1. Ask (or infer) the goal: reach, replies, follows, shares, clicks.
  2. Ask (or infer) the audience: who follows them, what topic neighborhood?
  3. Draft against the pre-post checklist, optimizing for the goal's primary action.
  4. Call out specific algorithmic risks in the draft (muted keywords, hook strength, length-for-dwell trade-off, OON viability).
  5. If reviewing existing copy, run the "why did this flop" sequence.
  6. Never recommend tactics that look like engagement farming — net-negative on not_interested / mute.

Be direct. Cite the mechanism (e.g., "not_dwelled is weighted negative — your first line has to stop the scroll") so the user learns the why, not just the what.

© carson2222, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in x-algorithm of carson2222/skills.

Open the folder on GitHubat commit c29af03

Compare with similar skills

X Algorithm Post Writing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

X Algorithm Post Writing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
X Algorithm Post Writing this skillcarson2222/skills113—~3.8kAutomated safety check: PassApache-2.0
Social Media Managementmanojbajaj95/claude-gtm-plugin1041 repos~3.9kAutomated safety check: PassMIT
Getxapi ConnectLeoYeAI/openclaw-marketing-skills1k1 repos~715Automated safety check: PassCustom licence
X Twitter ConnectLeoYeAI/openclaw-marketing-skills1k1 repos~1.6kAutomated safety check: PassCustom licence
Money Socialiamzifei/show-me-the-money1k—~2kAutomated safety check: PassCustom licence
Social Medianicepkg/ai-workflow285—~1.2kAutomated safety check: PassMIT

Similar skills

  • Social Media Management

    manojbajaj95/claude-gtm-plugin

    Comprehensive social media management for all platforms (LinkedIn, Twitter/X, Instagram, TikTok, Facebook, Pinterest, YouTube).

    104 GitHub starsUsed in 1 repo~3.9k tokens
    Writing & ContentAuto-check passed
  • Getxapi Connect

    LeoYeAI/openclaw-marketing-skills

    Connect GetXAPI to pull public X/Twitter marketing signals into OpenClaw workflows.

    1k GitHub starsUsed in 1 repo~715 tokens
    Marketing & SEOAuto-check passed
  • X Twitter Connect

    LeoYeAI/openclaw-marketing-skills

    Connect TweetClaw to pull public X/Twitter marketing signals into OpenClaw workflows.

    1k GitHub starsUsed in 1 repo~1.6k tokens
    Marketing & SEOAuto-check passed
  • Money Social

    iamzifei/show-me-the-money

    Social media management and community building automation. An agent skill from iamzifei/show-me-the-money.

    1k GitHub stars~2k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Social Media

    nicepkg/ai-workflow

    Create social media content for Twitter/X, LinkedIn, Facebook, Instagram including posts, threads, carousels, and engagement strategies.

    285 GitHub stars~1.2k tokensUpdated 8 mo ago
    Writing & ContentAuto-check passed
  • X Founder Operations

    LeoYeAI/openclaw-master-skills

    Systematic X (Twitter) operations skill for founders, indie developers, and tech professionals.

    2.2k GitHub stars~4.6k tokensUpdated 2 mo ago
    Writing & ContentAuto-check passed

More from carson2222/skills

  • OpenCode History Browser

    carson2222/skills

    Read-only lookup of local OpenCode history, including sessions, messages, plans, prompt history and prior decisions, queried through sqlite3 only when earlier context would help.

    113 GitHub stars~1.1k tokensUpdated 3 mo ago
    Auto-check passed
  • Design Exploration

    carson2222/skills

    Generates several visual directions for a component or page, lets you compare them, then fully implements the one you pick.

    113 GitHub stars~3.3k tokensUpdated 3 mo ago
    Auto-check passed

Works with

Questions about X Algorithm Post Writing

What does X Algorithm Post Writing do?

Writes and reviews X posts, threads and replies using what the open-sourced For You ranking system rewards, and explains why a post may have underperformed. The skill is built on the open-sourced X recommendation system and sets aside growth folklore. It explains the feed pipeline of sources, filters, scoring and selection, and the two routes into a feed: Thunder, the in-network store for followers, and Phoenix retrieval, which embeds your post and a user's engagement history to find out-of-network matches.

When should I use X Algorithm Post Writing?

X Algorithm Post Writing fits situations like: drafting an X post, thread, reply or quote post; rewriting a draft so it targets the signals the ranker rewards; working out why a post performed poorly; understanding how For You retrieval and ranking work.

How do I install X Algorithm Post Writing in Claude Code?

Run `npx skills add carson2222/skills --skill x-algorithm -a claude-code`. Or copy the skill folder (x-algorithm in carson2222/skills) into .claude/skills/x-algorithm in your project. Claude Code loads it when a task matches its description.

How do I install X Algorithm Post Writing in Codex?

Run `npx skills add carson2222/skills --skill x-algorithm -a codex`. Or copy the skill folder (x-algorithm in carson2222/skills) into .agents/skills/x-algorithm in your project. Codex loads it when a task matches its description.

Can I use X Algorithm Post Writing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add carson2222/skills --skill x-algorithm -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/x-algorithm, .gemini/skills/x-algorithm, .github/skills/x-algorithm and .opencode/skills/x-algorithm in your project.

What does X Algorithm Post Writing need to run?

SKILL.md names no scripts, command-line tools or credentials: X Algorithm Post Writing is instructions for the agent only.

Does X Algorithm Post Writing access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is X Algorithm Post Writing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does X Algorithm Post Writing use?

X Algorithm Post Writing is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does X Algorithm Post Writing use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to X Algorithm Post Writing?

Skills that share tags, products or a category with X Algorithm Post Writing: Social Media Management (manojbajaj95/claude-gtm-plugin, 104 stars), Getxapi Connect (LeoYeAI/openclaw-marketing-skills, 1k stars), X Twitter Connect (LeoYeAI/openclaw-marketing-skills, 1k stars) and Money Social (iamzifei/show-me-the-money, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains X Algorithm Post Writing?

carson2222 (a GitHub user) maintains it in carson2222/skills, which has 113 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on June 28, 2026.

Source: carson2222/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.