一键导入
add-article
Add a LinkedIn article to the site. Fetches metadata, downloads cover image, adds entry to articles.ts, and publishes (commit + push).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Add a LinkedIn article to the site. Fetches metadata, downloads cover image, adds entry to articles.ts, and publishes (commit + push).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Scan github.com/agigante80 for public repos and reconcile with the portfolio. Auto-adds new repos at Tier 3, refreshes existing project pages whose underlying repo has changed since the MDX was last edited, marks newly-archived repos, and surfaces tier-vs-popularity mismatches based on multi-signal engagement (stars, forks, npm, PyPI, Docker Hub pulls). One commit per sync. Recoverable via `git revert HEAD`.
Create or enrich one project on the skytale.it portfolio. Given a GitHub repo URL it scaffolds a new project MDX when none exists; given an existing project slug it enriches that project with the v5 template fields (tagline, links, stats, audience, quickstart, comparison) and optionally refines the body. Commits per project. For a batch reconcile across every repo use /sync-projects instead.
Review an incoming redesign or patch zip before it is applied. Extracts the patch, audits every file for compatibility with the current codebase, scans for forbidden em and en dashes, and reports findings with an apply recommendation. Does not apply, build, or commit anything.
| name | add-article |
| description | Add a LinkedIn article to the site. Fetches metadata, downloads cover image, adds entry to articles.ts, and publishes (commit + push). |
| user_invocable | true |
| arguments | url |
You are adding a new LinkedIn article to the skytale.it portfolio site.
NEVER write em dashes (--) or en dashes (-) anywhere - not in descriptions, titles, TL;DRs, or any other field. Use hyphens (-) only for connecting compound words. Rewrite any sentence that would normally use an em or en dash: use a comma, a colon, parentheses, or split it into two sentences instead.
The user provides a LinkedIn article URL (e.g., https://www.linkedin.com/pulse/...).
Tell the user: "Medium articles are automatically fetched via RSS at build time. No manual entry needed. Just rebuild the site and it will appear."
Use the WebFetch tool on the provided URL to extract the following fields. Each field powers specific SEO outputs. Quality matters:
| Field | What to extract | SEO role |
|---|---|---|
| title | The article headline, as-is from LinkedIn | <title> tag, og:title, Article schema headline. Rendered as {title} | Andrea Gigante. Flag if title alone > 55 chars (total would exceed 60 chars in SERPs) |
| description | A compelling search snippet (max 160 chars) | <meta name="description"> and og:description. Do not just copy the opening sentence; write it to make someone want to click. |
| date | Publication date (YYYY-MM-DD) | article:published_time OG tag and Article schema datePublished |
| tags | 2-4 specific, relevant topic tags | <meta property="article:tag">. Avoid generic terms like "Article" or "Post"; use meaningful topic labels |
| og:image URL | The cover image URL from <meta property="og:image"> | og:image for social sharing previews and Article schema image |
Extract the URL slug directly from the LinkedIn pulse URL: it's the path segment after /pulse/. For example:
https://www.linkedin.com/pulse/where-start-coding-ai-practical-guide-andrea-gigante-o8kiewhere-start-coding-ai-practical-guide-andrea-gigante-o8kieUse this slug as the image filename. Covers live under src/assets/ (not public/) so Astro's <Image> pipeline optimizes them (WebP/AVIF, responsive srcset, intrinsic dimensions). No manual compression is needed; drop the original in and the build handles the rest.
curl -sL -o src/assets/images/articles/<slug>.jpg "<og:image URL>"
Verify the file downloaded and is a real cover image (should be > 10KB). Anything smaller is likely a placeholder or icon:
ls -la src/assets/images/articles/<slug>.jpg
If the image is missing or < 10KB, warn the user: the article page will show a platform placeholder instead of a cover image, which is less compelling for social sharing.
Based on the article content fetched in Step 1, write a TL;DR: 2-4 sentences that capture the core insight or argument. This is the main body content on the local detail page at /articles/<slug>.
Guidelines:
Before writing the entry, verify all of the following and report the results to the user:
description is ≤ 160 chars (count the characters)title is ≤ 55 chars (warn but don't block if longer)tags are specific topic terms (not generic words like "Article", "Post", "LinkedIn")slug matches the LinkedIn URL path exactly (no manual truncation or modification)Open src/lib/articles.ts and add a new object to the linkedinArticles array. Insert it in chronological order (newest first). Follow this exact format:
{
title: "<title>",
description: "<description (max 160 chars)>",
date: new Date('<YYYY-MM-DD>'),
tags: ["Tag1", "Tag2", "Tag3"],
url: "<clean URL without tracking params>",
platform: 'linkedin',
image: "/images/articles/<slug>.jpg", // keep this legacy-style path; resolveArticleCover() matches the file in src/assets by filename stem
slug: "<slug extracted from URL, exact match>",
tldr: "<2-4 sentence TL;DR>",
},
Important: Strip tracking parameters (trackingId, lipi) from the URL. Keep only the base /pulse/... path.
Run a local build and confirm it succeeds before committing. This validates the cover (Astro optimizes it through <Image> at build time) and catches any TypeScript error in articles.ts. Never push without a green build:
npm run build
If it fails, fix the cause and rebuild. Do not commit a failing build.
Stage and commit the two changed files, then push to main:
git add src/lib/articles.ts src/assets/images/articles/<slug>.jpg
git commit -m "Add article: <title>"
git push origin main
Tell the user the article has been added and published. Show them:
https://www.skytale.it/articles/<slug> (available once Cloudflare builds)