{
  "schemaVersion": "1.0",
  "item": {
    "slug": "kaspa-news",
    "name": "Kaspa News",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/atl4so/kaspa-news",
    "canonicalUrl": "https://clawhub.ai/atl4so/kaspa-news",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/kaspa-news",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=kaspa-news",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "FORMAT_LOCK.md",
      "SKILL.md",
      "scripts/kaspa-news.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/kaspa-news"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/kaspa-news",
    "agentPageUrl": "https://openagent3.xyz/skills/kaspa-news/agent",
    "manifestUrl": "https://openagent3.xyz/skills/kaspa-news/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/kaspa-news/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Kaspa News Skill",
        "body": "Query the public kaspa.news API for Kaspa ecosystem intelligence. No API keys needed."
      },
      {
        "title": "Quick Start",
        "body": "SCRIPT=\"~/.openclaw/workspace/skills/kaspa-news/scripts/kaspa-news.sh\"\n\n$SCRIPT focused           # Curated community tweets\n$SCRIPT builders           # Ecosystem/builder tweets\n$SCRIPT top                # Most viewed tweets\n$SCRIPT developers         # Core dev tweets (includes replies)\n$SCRIPT videos             # YouTube videos\n$SCRIPT reddit             # r/kaspa posts\n$SCRIPT pulse              # Latest AI pulse report"
      },
      {
        "title": "Requirements",
        "body": "python3 with requests module\njq\nInternet access to https://kaspa.news/api\nNo API keys, no tokens, no auth — all endpoints are public"
      },
      {
        "title": "focused — Curated Community Tweets",
        "body": "Community-curated tweets. Excludes replies. Best for \"what's the Kaspa community talking about?\"\n\n$SCRIPT focused              # Latest 10\n$SCRIPT focused -n 5         # Latest 5\n$SCRIPT focused --since 12   # Last 12 hours only"
      },
      {
        "title": "builders — Ecosystem/Builder Tweets",
        "body": "Projects building on Kaspa (labeled \"Ecosystem\" on kaspa.news frontend). Excludes replies.\n\n$SCRIPT builders             # Latest 10\n$SCRIPT builders -n 20       # Latest 20"
      },
      {
        "title": "top — Highest Engagement Tweets",
        "body": "Sorted by view count (most views first). This is the only command that shows view counts (👁️).\n\n$SCRIPT top                  # Top 10 by views\n$SCRIPT top -n 3             # Top 3"
      },
      {
        "title": "developers — Developer Tweets",
        "body": "Tweets from known Kaspa core developers. Includes replies (unlike other tweet commands). Shows dev discussions and technical debates.\n\nThe script has a built-in list of known dev usernames, but this is only for the default developers command filter. Per-user searches (see below) work for ANY username.\n\n$SCRIPT developers           # Latest 10 dev tweets\n$SCRIPT developers -n 15     # Latest 15"
      },
      {
        "title": "videos — YouTube Videos",
        "body": "Latest Kaspa-related YouTube videos with view/like counts.\n\n$SCRIPT videos               # Latest 10\n$SCRIPT videos --since 48    # Last 2 days"
      },
      {
        "title": "reddit — Reddit Posts",
        "body": "Latest posts from r/kaspa with upvote scores.\n\n$SCRIPT reddit               # Latest 10\n$SCRIPT reddit -n 5          # Latest 5"
      },
      {
        "title": "pulse — AI Pulse Report",
        "body": "AI-generated intelligence report summarizing recent Kaspa ecosystem activity. Single latest report.\n\n$SCRIPT pulse                # Latest report (text summary)\n$SCRIPT pulse --sources      # With clickable source links to tweets\n$SCRIPT pulse --json         # Full JSON (for custom parsing)"
      },
      {
        "title": "Global Options",
        "body": "OptionDescriptionDefault-n, --limit NNumber of items to show10--since HOURSOnly items from last N hoursall--jsonRaw JSON output (for scripting/parsing)off--sourcesShow source links in pulse reportsoff-h, --helpShow help text—"
      },
      {
        "title": "Script Output Format",
        "body": "The script outputs plain text. Here's exactly what each command produces:"
      },
      {
        "title": "Tweet Commands (focused, builders, developers)",
        "body": "🎯 Focused Tweets\n\n📝 @DailyKaspa (1h)\nNearly $10 million in short positions are stacked around the 0.037 level...\n[SOURCE](https://x.com/DailyKaspa/status/2024047412226978031)\n\n💬 @KaspaHub (10h)\nBetter late than never, I guess.\n[SOURCE](https://x.com/KaspaHub/status/2023918673216311580)\n\n↩️ @hashdag (1h)\n@asaefstroem @maxibitcat could be, not ruling that out...\n[SOURCE](https://x.com/hashdag/status/2024050945718399078)"
      },
      {
        "title": "Top Command (includes view counts)",
        "body": "🔥 Top Tweets\n\n📝 @BSCNews (23h) — 👁️ 22179\n🚨JUST IN: $KAS, $PI, $ASTER AMONG PROJECTS WITH MOST BULLISH SENTIMENT...\n[SOURCE](https://x.com/BSCNews/status/2023709720901534048)\n\n💬 @kaspaunchained (14h) — 👁️ 10663\nPrivate messaging on Kaspa L1. Encrypted payloads riding the BlockDAG...\n[SOURCE](https://x.com/kaspaunchained/status/2023845437577257447)"
      },
      {
        "title": "Videos",
        "body": "📺 Kaspa Videos\n\n📺 Kaspa Crypto Prediction | Why We Went Bearish?\n  📡 Crypto MindSet | 👁️ 80 | ❤️ 3 | 6h\n  🔗 https://youtube.com/watch?v=NgO5iW1B_t4"
      },
      {
        "title": "Reddit",
        "body": "🟠 Kaspa Reddit\n\n🟠 Did Fred Thiel Dump his Kaspa Bag?\n  👤 u/Weekly-Fudge1909 | ⬆️ 10 | 2h\n  🔗 https://reddit.com/r/kaspa/comments/1r7o9oi"
      },
      {
        "title": "Pulse",
        "body": "📊 Kaspa Pulse Reports\n\n[REPORT HERE](https://kaspa.news/pulse/d6167911-21ab-4135-bccb-a4baf4e4480f)\n\n📊 From Silverscript to TangFi...\n  🕐 13h | 🤖 gpt-5.2\n\n  Silverscript compiler goes live on Testnet 12, delivering first high-level\n  contract language for Kaspa..."
      },
      {
        "title": "🎨 PRESENTATION RULES (MANDATORY FOR ALL AGENTS)",
        "body": "The script outputs plain text. When you present this to a user, follow these rules exactly. This is the approved format — do not deviate."
      },
      {
        "title": "Tweet Type Emojis",
        "body": "EmojiMeaning📝Regular tweet💬Quote tweet (user's own comment only — NOT the quoted source tweet)↩️Reply"
      },
      {
        "title": "What the Script Already Does (don't redo these)",
        "body": "✅ Picks correct emoji (📝/💬/↩️)\n✅ Shows relative time (\"10h\", \"1d\", \"5m\" — no \"ago\")\n✅ Expands t.co links to real URLs\n✅ Strips trailing t.co image links\n✅ Decodes HTML entities (& → &, > → >)\n✅ Truncates at 300 chars\n✅ Adds SOURCE link on every tweet\n✅ Shows 👁️ views ONLY on top command"
      },
      {
        "title": "What YOU (the presenting agent) Must Do",
        "body": "X/Twitter Linkification\n\nConvert plain text @handles, #hashtags, and $CASHTAGS into clickable links:\n\n@username → [@username](https://x.com/username) — links to X profile\n#hashtag → [#hashtag](https://x.com/search?q=%23hashtag) — links to X search\n$KAS → [$KAS](https://x.com/search?q=%24KAS) — links to X search\n\nImportant:\n\nOnly linkify REAL handles/hashtags/cashtags\n#2, #4, #10BPS (numbers) are NOT hashtags — leave as-is\n@ inside email addresses are NOT handles — leave as-is\nLink to x.com (NOT twitter.com, NOT Telegram)\n\nPulse Report Formatting\n\nWhen presenting pulse reports, reformat the summary into grouped sections:\n\n📊 **Latest Kaspa Pulse Report** (date)\n\n**\"Report Title Here\"**\n\n━━━ Core Development ━━━\n\n🔧 **Silverscript** — First high-level smart contract language, live on TN12.\n\n📐 **Covenants** — Enable programmable spending conditions on UTXO.\n\n━━━ Ecosystem ━━━\n\n💵 **TangFi** — Bridging stablecoins (USDT/USDC) to Kaspa L1.\n\n🔐 **Private Messaging** — Encrypted payloads on BlockDAG at 10 BPS.\n\n━━━ Milestones ━━━\n\n📈 600M total transactions on Kaspa mainnet.\n\nPulse formatting rules:\n\nGroup by category with ━━━ Category ━━━ separators\nBold project/feature names\nOne line per item, max 1-2 sentences\nUse emojis as bullet prefixes (🔧💵🔐💬🌉⚡🏦📊📈💎🎤📱)\nKey people to name: @hashdag (Yonatan Sompolinsky), @michaelsuttonil (Michael Sutton), @OriNewman (Ori Newman)"
      },
      {
        "title": "🔍 Per-User Tweet Search",
        "body": "When someone asks for tweets from a specific person (e.g., \"show me @michaelsuttonil tweets from last 2 weeks\"), this works for ANY username — not limited to the 9 built-in dev names."
      },
      {
        "title": "How to Query",
        "body": "Fetch ALL endpoints and merge (always go wide):\n\n# Fetch all 4 tweet sources\n$SCRIPT focused --json -n 999 > /tmp/focused.json\n$SCRIPT builders --json -n 999 > /tmp/builders.json\n$SCRIPT top --json -n 999 > /tmp/top.json\n$SCRIPT developers --json -n 999 > /tmp/devs.json\n\n# Merge, deduplicate by url, filter by username + date range (safe)\nTARGET_USER=\"michaelsuttonil\"\ncat /tmp/*.json | jq -s --arg user \"$TARGET_USER\" 'add | unique_by(.url) | [.[] | select(.author_username == $user)]'\n\nOr use the --json output and filter with jq/python inline.\n\nSecurity note: never interpolate raw user input directly into jq programs. Always pass user values via --arg / --argjson."
      },
      {
        "title": "How to Present Per-User Results",
        "body": "Group by date (newest first). Standalone posts first, then replies.\n\n📅 Feb 17 — Smart contracts and Silverscript progress\n\n📝 @michaelsuttonil\nFull tweet text here exactly as-is...\n[SOURCE](https://x.com/michaelsuttonil/status/123)\n\n💬 @michaelsuttonil\nQuote comment here (user's own words only)...\n[SOURCE](https://x.com/michaelsuttonil/status/456)\n\n↩️ To @hashdag: \"Reply text shown in quotes...\"\n[SOURCE](https://x.com/michaelsuttonil/status/789)\n\n---\n\n📅 Feb 16 — TN12 testing and validator discussion\n\n📝 @michaelsuttonil\nAnother tweet...\n[SOURCE](url)\n\nPer-user format rules:\n\n📅 Feb 17 date headers with em dash + brief theme summary\n--- separator between date groups\nStandalone posts first (📝/💬), replies below (↩️)\nReplies: ↩️ To @recipient: \"quoted reply text...\"\nOmit trivial replies (\"100%\", \"sure\", \"thanks\") unless notable\nEnd with brief editorial summary of themes across the period\nAlways search the FULL time range asked — never shorten it\nShow everything found — don't pre-filter or narrow results"
      },
      {
        "title": "❌ DO NOT (hard rules)",
        "body": "These are locked rules. Violating any of these = wrong output.\n\nRuleWhy❌ Don't edit, trim, rewrite, or summarize tweet textShow user's exact words❌ Don't merge same-author tweets togetherEvery tweet is separate❌ Don't show the quoted tweet's source textQuote tweets show ONLY the user's own comment❌ Don't show sentiment percentages (bullish/bearish %)User explicitly forbids this❌ Don't show \"N tweets analyzed\" countsUser explicitly forbids this❌ Don't show model name in pulse output to usersInternal detail❌ Don't add bold to @usernames in tweet outputScript format is final❌ Don't add extra emojis or separator lines to tweetsScript format is final❌ Don't add \"(latest N)\" to section headersClean headers only❌ Don't add type labels like \"— 📝 Tweet\" after timeEmoji prefix is enough❌ Don't use markdown tables for tweetsUse the line-by-line format❌ Don't say \"according to the pulse report\"Just present the info directly❌ Don't add engagement metrics (❤️/🔁) to any command except topOnly top shows 👁️❌ Don't link @handles to TelegramAlways link to x.com❌ Don't strip [SOURCE] linksThey're always shown"
      },
      {
        "title": "✅ DO (best practices)",
        "body": "PracticeDetail✅ Run the script, present its outputDon't fabricate or cache old data✅ Linkify @handles → x.com profiles[@user](https://x.com/user)✅ Linkify #hashtags → x.com search[#kaspa](https://x.com/search?q=%23kaspa)✅ Linkify $CASHTAGS → x.com search[$KAS](https://x.com/search?q=%24KAS)✅ Group pulse reports by categoryUse ━━━ separators✅ Bold project names in pulseMakes scanning easy✅ Keep it scannable on mobileShort lines, emojis, no walls of text✅ For per-user search: go wideSearch ALL endpoints, full time range✅ Use --json for custom filteringThen format manually"
      },
      {
        "title": "Trigger Phrases",
        "body": "Use this skill when the user says anything like:\n\n\"kaspa news\", \"what's happening in kaspa\", \"kaspa tweets\"\n\"kaspa pulse\", \"kaspa report\", \"kaspa update\"\n\"kaspa devs\", \"what are kaspa developers saying\"\n\"kaspa videos\", \"kaspa youtube\"\n\"kaspa reddit\"\n\"show me tweets from @someone\" (per-user search)\n\"top kaspa tweets\", \"trending kaspa\"\nAny mention of kaspa.news"
      },
      {
        "title": "Architecture Notes",
        "body": "API base: https://kaspa.news/api (fixed; no env override)\nAPI returns cached data — query params like ?limit= are ignored server-side\nAll filtering is client-side — script fetches full dataset, filters with jq\nNo auth needed — all endpoints are public, no API keys\nNo runtime env vars required\nScript outputs plain text — the presenting agent handles linkification\nFORMAT_LOCK.md in the skill directory is the canonical format specification"
      }
    ],
    "body": "Kaspa News Skill\n\nQuery the public kaspa.news API for Kaspa ecosystem intelligence. No API keys needed.\n\nQuick Start\nSCRIPT=\"~/.openclaw/workspace/skills/kaspa-news/scripts/kaspa-news.sh\"\n\n$SCRIPT focused           # Curated community tweets\n$SCRIPT builders           # Ecosystem/builder tweets\n$SCRIPT top                # Most viewed tweets\n$SCRIPT developers         # Core dev tweets (includes replies)\n$SCRIPT videos             # YouTube videos\n$SCRIPT reddit             # r/kaspa posts\n$SCRIPT pulse              # Latest AI pulse report\n\nRequirements\npython3 with requests module\njq\nInternet access to https://kaspa.news/api\nNo API keys, no tokens, no auth — all endpoints are public\nCommands Reference\nfocused — Curated Community Tweets\n\nCommunity-curated tweets. Excludes replies. Best for \"what's the Kaspa community talking about?\"\n\n$SCRIPT focused              # Latest 10\n$SCRIPT focused -n 5         # Latest 5\n$SCRIPT focused --since 12   # Last 12 hours only\n\nbuilders — Ecosystem/Builder Tweets\n\nProjects building on Kaspa (labeled \"Ecosystem\" on kaspa.news frontend). Excludes replies.\n\n$SCRIPT builders             # Latest 10\n$SCRIPT builders -n 20       # Latest 20\n\ntop — Highest Engagement Tweets\n\nSorted by view count (most views first). This is the only command that shows view counts (👁️).\n\n$SCRIPT top                  # Top 10 by views\n$SCRIPT top -n 3             # Top 3\n\ndevelopers — Developer Tweets\n\nTweets from known Kaspa core developers. Includes replies (unlike other tweet commands). Shows dev discussions and technical debates.\n\nThe script has a built-in list of known dev usernames, but this is only for the default developers command filter. Per-user searches (see below) work for ANY username.\n\n$SCRIPT developers           # Latest 10 dev tweets\n$SCRIPT developers -n 15     # Latest 15\n\nvideos — YouTube Videos\n\nLatest Kaspa-related YouTube videos with view/like counts.\n\n$SCRIPT videos               # Latest 10\n$SCRIPT videos --since 48    # Last 2 days\n\nreddit — Reddit Posts\n\nLatest posts from r/kaspa with upvote scores.\n\n$SCRIPT reddit               # Latest 10\n$SCRIPT reddit -n 5          # Latest 5\n\npulse — AI Pulse Report\n\nAI-generated intelligence report summarizing recent Kaspa ecosystem activity. Single latest report.\n\n$SCRIPT pulse                # Latest report (text summary)\n$SCRIPT pulse --sources      # With clickable source links to tweets\n$SCRIPT pulse --json         # Full JSON (for custom parsing)\n\nGlobal Options\nOption\tDescription\tDefault\n-n, --limit N\tNumber of items to show\t10\n--since HOURS\tOnly items from last N hours\tall\n--json\tRaw JSON output (for scripting/parsing)\toff\n--sources\tShow source links in pulse reports\toff\n-h, --help\tShow help text\t—\nScript Output Format\n\nThe script outputs plain text. Here's exactly what each command produces:\n\nTweet Commands (focused, builders, developers)\n🎯 Focused Tweets\n\n📝 @DailyKaspa (1h)\nNearly $10 million in short positions are stacked around the 0.037 level...\n[SOURCE](https://x.com/DailyKaspa/status/2024047412226978031)\n\n💬 @KaspaHub (10h)\nBetter late than never, I guess.\n[SOURCE](https://x.com/KaspaHub/status/2023918673216311580)\n\n↩️ @hashdag (1h)\n@asaefstroem @maxibitcat could be, not ruling that out...\n[SOURCE](https://x.com/hashdag/status/2024050945718399078)\n\nTop Command (includes view counts)\n🔥 Top Tweets\n\n📝 @BSCNews (23h) — 👁️ 22179\n🚨JUST IN: $KAS, $PI, $ASTER AMONG PROJECTS WITH MOST BULLISH SENTIMENT...\n[SOURCE](https://x.com/BSCNews/status/2023709720901534048)\n\n💬 @kaspaunchained (14h) — 👁️ 10663\nPrivate messaging on Kaspa L1. Encrypted payloads riding the BlockDAG...\n[SOURCE](https://x.com/kaspaunchained/status/2023845437577257447)\n\nVideos\n📺 Kaspa Videos\n\n📺 Kaspa Crypto Prediction | Why We Went Bearish?\n  📡 Crypto MindSet | 👁️ 80 | ❤️ 3 | 6h\n  🔗 https://youtube.com/watch?v=NgO5iW1B_t4\n\nReddit\n🟠 Kaspa Reddit\n\n🟠 Did Fred Thiel Dump his Kaspa Bag?\n  👤 u/Weekly-Fudge1909 | ⬆️ 10 | 2h\n  🔗 https://reddit.com/r/kaspa/comments/1r7o9oi\n\nPulse\n📊 Kaspa Pulse Reports\n\n[REPORT HERE](https://kaspa.news/pulse/d6167911-21ab-4135-bccb-a4baf4e4480f)\n\n📊 From Silverscript to TangFi...\n  🕐 13h | 🤖 gpt-5.2\n\n  Silverscript compiler goes live on Testnet 12, delivering first high-level\n  contract language for Kaspa...\n\n🎨 PRESENTATION RULES (MANDATORY FOR ALL AGENTS)\n\nThe script outputs plain text. When you present this to a user, follow these rules exactly. This is the approved format — do not deviate.\n\nTweet Type Emojis\nEmoji\tMeaning\n📝\tRegular tweet\n💬\tQuote tweet (user's own comment only — NOT the quoted source tweet)\n↩️\tReply\nWhat the Script Already Does (don't redo these)\n✅ Picks correct emoji (📝/💬/↩️)\n✅ Shows relative time (\"10h\", \"1d\", \"5m\" — no \"ago\")\n✅ Expands t.co links to real URLs\n✅ Strips trailing t.co image links\n✅ Decodes HTML entities (& → &, > → >)\n✅ Truncates at 300 chars\n✅ Adds SOURCE link on every tweet\n✅ Shows 👁️ views ONLY on top command\nWhat YOU (the presenting agent) Must Do\nX/Twitter Linkification\n\nConvert plain text @handles, #hashtags, and $CASHTAGS into clickable links:\n\n@username → [@username](https://x.com/username) — links to X profile\n#hashtag → [#hashtag](https://x.com/search?q=%23hashtag) — links to X search\n$KAS → [$KAS](https://x.com/search?q=%24KAS) — links to X search\n\nImportant:\n\nOnly linkify REAL handles/hashtags/cashtags\n#2, #4, #10BPS (numbers) are NOT hashtags — leave as-is\n@ inside email addresses are NOT handles — leave as-is\nLink to x.com (NOT twitter.com, NOT Telegram)\nPulse Report Formatting\n\nWhen presenting pulse reports, reformat the summary into grouped sections:\n\n📊 **Latest Kaspa Pulse Report** (date)\n\n**\"Report Title Here\"**\n\n━━━ Core Development ━━━\n\n🔧 **Silverscript** — First high-level smart contract language, live on TN12.\n\n📐 **Covenants** — Enable programmable spending conditions on UTXO.\n\n━━━ Ecosystem ━━━\n\n💵 **TangFi** — Bridging stablecoins (USDT/USDC) to Kaspa L1.\n\n🔐 **Private Messaging** — Encrypted payloads on BlockDAG at 10 BPS.\n\n━━━ Milestones ━━━\n\n📈 600M total transactions on Kaspa mainnet.\n\n\nPulse formatting rules:\n\nGroup by category with ━━━ Category ━━━ separators\nBold project/feature names\nOne line per item, max 1-2 sentences\nUse emojis as bullet prefixes (🔧💵🔐💬🌉⚡🏦📊📈💎🎤📱)\nKey people to name: @hashdag (Yonatan Sompolinsky), @michaelsuttonil (Michael Sutton), @OriNewman (Ori Newman)\n🔍 Per-User Tweet Search\n\nWhen someone asks for tweets from a specific person (e.g., \"show me @michaelsuttonil tweets from last 2 weeks\"), this works for ANY username — not limited to the 9 built-in dev names.\n\nHow to Query\n\nFetch ALL endpoints and merge (always go wide):\n\n# Fetch all 4 tweet sources\n$SCRIPT focused --json -n 999 > /tmp/focused.json\n$SCRIPT builders --json -n 999 > /tmp/builders.json\n$SCRIPT top --json -n 999 > /tmp/top.json\n$SCRIPT developers --json -n 999 > /tmp/devs.json\n\n# Merge, deduplicate by url, filter by username + date range (safe)\nTARGET_USER=\"michaelsuttonil\"\ncat /tmp/*.json | jq -s --arg user \"$TARGET_USER\" 'add | unique_by(.url) | [.[] | select(.author_username == $user)]'\n\n\nOr use the --json output and filter with jq/python inline.\n\nSecurity note: never interpolate raw user input directly into jq programs. Always pass user values via --arg / --argjson.\n\nHow to Present Per-User Results\n\nGroup by date (newest first). Standalone posts first, then replies.\n\n📅 Feb 17 — Smart contracts and Silverscript progress\n\n📝 @michaelsuttonil\nFull tweet text here exactly as-is...\n[SOURCE](https://x.com/michaelsuttonil/status/123)\n\n💬 @michaelsuttonil\nQuote comment here (user's own words only)...\n[SOURCE](https://x.com/michaelsuttonil/status/456)\n\n↩️ To @hashdag: \"Reply text shown in quotes...\"\n[SOURCE](https://x.com/michaelsuttonil/status/789)\n\n---\n\n📅 Feb 16 — TN12 testing and validator discussion\n\n📝 @michaelsuttonil\nAnother tweet...\n[SOURCE](url)\n\n\nPer-user format rules:\n\n📅 Feb 17 date headers with em dash + brief theme summary\n--- separator between date groups\nStandalone posts first (📝/💬), replies below (↩️)\nReplies: ↩️ To @recipient: \"quoted reply text...\"\nOmit trivial replies (\"100%\", \"sure\", \"thanks\") unless notable\nEnd with brief editorial summary of themes across the period\nAlways search the FULL time range asked — never shorten it\nShow everything found — don't pre-filter or narrow results\n❌ DO NOT (hard rules)\n\nThese are locked rules. Violating any of these = wrong output.\n\nRule\tWhy\n❌ Don't edit, trim, rewrite, or summarize tweet text\tShow user's exact words\n❌ Don't merge same-author tweets together\tEvery tweet is separate\n❌ Don't show the quoted tweet's source text\tQuote tweets show ONLY the user's own comment\n❌ Don't show sentiment percentages (bullish/bearish %)\tUser explicitly forbids this\n❌ Don't show \"N tweets analyzed\" counts\tUser explicitly forbids this\n❌ Don't show model name in pulse output to users\tInternal detail\n❌ Don't add bold to @usernames in tweet output\tScript format is final\n❌ Don't add extra emojis or separator lines to tweets\tScript format is final\n❌ Don't add \"(latest N)\" to section headers\tClean headers only\n❌ Don't add type labels like \"— 📝 Tweet\" after time\tEmoji prefix is enough\n❌ Don't use markdown tables for tweets\tUse the line-by-line format\n❌ Don't say \"according to the pulse report\"\tJust present the info directly\n❌ Don't add engagement metrics (❤️/🔁) to any command except top\tOnly top shows 👁️\n❌ Don't link @handles to Telegram\tAlways link to x.com\n❌ Don't strip [SOURCE] links\tThey're always shown\n✅ DO (best practices)\nPractice\tDetail\n✅ Run the script, present its output\tDon't fabricate or cache old data\n✅ Linkify @handles → x.com profiles\t[@user](https://x.com/user)\n✅ Linkify #hashtags → x.com search\t[#kaspa](https://x.com/search?q=%23kaspa)\n✅ Linkify $CASHTAGS → x.com search\t[$KAS](https://x.com/search?q=%24KAS)\n✅ Group pulse reports by category\tUse ━━━ separators\n✅ Bold project names in pulse\tMakes scanning easy\n✅ Keep it scannable on mobile\tShort lines, emojis, no walls of text\n✅ For per-user search: go wide\tSearch ALL endpoints, full time range\n✅ Use --json for custom filtering\tThen format manually\nTrigger Phrases\n\nUse this skill when the user says anything like:\n\n\"kaspa news\", \"what's happening in kaspa\", \"kaspa tweets\"\n\"kaspa pulse\", \"kaspa report\", \"kaspa update\"\n\"kaspa devs\", \"what are kaspa developers saying\"\n\"kaspa videos\", \"kaspa youtube\"\n\"kaspa reddit\"\n\"show me tweets from @someone\" (per-user search)\n\"top kaspa tweets\", \"trending kaspa\"\nAny mention of kaspa.news\nArchitecture Notes\nAPI base: https://kaspa.news/api (fixed; no env override)\nAPI returns cached data — query params like ?limit= are ignored server-side\nAll filtering is client-side — script fetches full dataset, filters with jq\nNo auth needed — all endpoints are public, no API keys\nNo runtime env vars required\nScript outputs plain text — the presenting agent handles linkification\nFORMAT_LOCK.md in the skill directory is the canonical format specification"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/atl4so/kaspa-news",
    "publisherUrl": "https://clawhub.ai/atl4so/kaspa-news",
    "owner": "atl4so",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/kaspa-news",
    "downloadUrl": "https://openagent3.xyz/downloads/kaspa-news",
    "agentUrl": "https://openagent3.xyz/skills/kaspa-news/agent",
    "manifestUrl": "https://openagent3.xyz/skills/kaspa-news/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/kaspa-news/agent.md"
  }
}