add-x-tweet
bklit/bklit-ui/.agents/skills/add-x-tweet/SKILL.md
Add X (Twitter) testimonials to the bklit homepage. Fetches username, avatar, and tweet text from a status URL and appends an entry to apps/web/lib/testimonials.ts. Use when the user shares an x.com/twitter.com tweet URL to add or replace a testimonial.
Skill1.7k starsChanged 4 months ago
What's in it
- Add X Tweet Testimonial
- When to use
- Workflow
- 1. Fetch tweet metadata
- 2. Edit apps/web/lib/testimonials.ts
- 3. Ordering rules
- 4. Collapsed grid
- 5. Verify
- Data source
- Example entry
---
name: add-x-tweet
description: Add X (Twitter) testimonials to the bklit homepage. Fetches username, avatar, and tweet text from a status URL and appends an entry to apps/web/lib/testimonials.ts. Use when the user shares an x.com/twitter.com tweet URL to add or replace a testimonial.
---
# Add X Tweet Testimonial
Add social proof tweets to the homepage testimonial grid.
## When to use
- User provides one or more `https://x.com/.../status/...` URLs
- User asks to replace, prioritize, or reorder testimonials
- User says "add tweet", "new testimonial", or similar
## Workflow
### 1. Fetch tweet metadata
Run the fetch script from the repo root (requires network):
```bash
node .agents/skills/add-x-tweet/scripts/fetch-tweet.mjs "https://x.com/user/status/123..."
```
For multiple URLs, pass each URL or run once per URL.
The script prints JSON:
```json
{
"id": "123...",
"url": "https://x.com/user/status/123...",
"author": { "name": "...", "handle": "@user", "avatar": "https://pbs.twimg.com/...", "verified": true },
"content": "tweet text without @uixmat prefix"
}
```
**Fallback:** If the script fails, use Twitter oEmbed:
```bash
curl -sL "https://publish.twitter.com/oembed?url=TWEET_URL&omit_script=1"
```
Parse `author_name` and HTML `<p>` for text. Avatar still needs fxtwitter or manual profile image URL.
### 2. Edit `apps/web/lib/testimonials.ts`
- Use **status id** as `id` (numeric string from URL)
- Set `url` to the canonical tweet URL (no query params)
- Run avatar through `twitterAvatarUrl()` (upgrades `_200x200` → `_400x400`)
- Strip leading `@uixmat` from content; trim whitespace
- Shorten very long tweets if they include trailing promo links (keep the praise, drop link-only tails)
### 3. Ordering rules
Masonry uses CSS columns (top-to-bottom per column). On `lg`, **indices 0–2** = column 1 top 3, **3–5** = column 2 top 3, **6–8** = column 3 top 3.
- **Prioritize** when asked: place in the next open slot among indices 0–8 without duplicating ids
- **Replace** when asked: remove the old entry (match by handle or old id) before adding the new one
- Set `author.verified` from script output (`author.verification.verified` via FxTwitter)
### 4. Collapsed grid
The homepage shows `testimonialCollapsedCount` (6) cards before **See more**. No change needed when adding tweets unless the user asks to change visible rows.
### 5. Verify
```bash
cd apps/web && npx tsc --noEmit -p tsconfig.json
```
Open homepage — grid is 3 columns, bottom fade + **See more** expands max-height.
## Data source
Primary: [FxTwitter API](https://github.com/FixTweet/FxTwitter) `https://api.fxtwitter.com/{user}/status/{id}` — returns author name, screen_name, avatar_url, and text.
Do not commit API keys; the public endpoint is used by the script only at add-tweet time.
## Example entry
```ts
{
id: "2056717453816729751",
url: "https://x.com/jordienr/status/2056717453816729751",
author: {
name: "jordi",
handle: "@jordienr",
avatar: twitterAvatarUrl(
"https://pbs.twimg.com/profile_images/2053541405121769475/TUDez6zL_200x200.jpg"
),
verified: true,
},
content: "bklit saved my marriage",
},
```
More agent context in bklit/bklit-ui
14 other files this repository gives its agents.
AGENTS.md
Skill
- bklit-playground.agents/skills/bklit-playground/SKILL.md
- bklit-ship.agents/skills/bklit-ship/SKILL.md
- bklit-studio-chart-performance.agents/skills/bklit-studio-chart-performance/SKILL.md
- bklit-studio.agents/skills/bklit-studio/SKILL.md
- pr-open.agents/skills/pr-open/SKILL.md
- shadcn.agents/skills/shadcn/SKILL.md
- turborepo.agents/skills/turborepo/SKILL.md
- unit-tests.agents/skills/unit-tests/SKILL.md
- wiki-llms-txt.agents/skills/wiki-llms-text/SKILL.md
- bklit-uiskills/bklit-ui/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

