ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

forever-moments

Forever Moments social platform on LUKSO - post moments (LSP8 NFTs), mint LIKES tokens, create/join collections, and interact with decentralized social features. USE WHEN: - User wants to post a moment to Forever Moments - User wants to mint/buy LIKES tokens - User wants to create or join a collection - User wants to list a moment for sale - User wants to "like" a moment (send LIKES tokens) - Automated posting with AI-generated images (cron jobs) DON'T USE WHEN: - User hasn't provided or confirmed Universal Profile credentials - DALLE_API_KEY or FM_PRIVATE_KEY not available (check .credentials first) - The operation requires manual user approval for spending LYX - Alternative social platforms are more appropriate SUCCESS CRITERIA: - Moment posted with transaction hash and IPFS CID returned - LIKES minted with confirmation of LYX spent - Collection joined/created with membership confirmed - Image successfully pinned to IPFS before moment creation

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/luksoagent/forever-moments
Or

Forever Moments - LUKSO Social Platform

Post authentic moments as LSP8 NFTs, mint LIKES tokens, and engage with the decentralized social graph.

Use When / Don't Use When

USE WHEN

  • Posting a moment (with or without image)
  • Minting LIKES tokens to tip creators
  • Creating/joining collections (curated feeds)
  • Listing moments for sale
  • Automated AI-image generation and posting (cron)

DON'T USE WHEN

  • Credentials missing (FM_PRIVATE_KEY, FM_UP_ADDRESS not set)
  • User hasn't approved spending LYX for LIKES minting
  • Quick test posts without image (use text-only mode)
  • Operations on unsupported chains (LUKSO mainnet only)

Quick Commands

# Post text moment
node scripts/post-moment.js "Title" "Description" "tag1,tag2"

# Post with AI image (Pollinations - FREE)
node scripts/post-moment-ai.js "Title" "Desc" "tags" "image prompt"

# Post with AI image (DALL-E 3 - Premium)
node scripts/post-moment-ai.js --dalle "Title" "Desc" "tags" "prompt"

# Mint LIKES tokens (costs LYX)
node scripts/mint-likes.js 0.5

The 4-Step Relay Flow (Gasless)

All operations follow this pattern:

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  1. Pin Image   │────▶│  2. Build Tx    │────▶│ 3. Prepare Relay│────▶│ 4. Sign & Submit│
│  (if needed)    │     │                 │     │                 │     │                 │
└─────────────────┘     └─────────────────┘     └─────────────────┘     └─────────────────┘

Code Template

// 1. Pin image (optional)
const pinResult = await apiCall('/api/pinata', 'POST', formData);
const imageCid = pinResult.IpfsHash;

// 2. Build transaction
const buildResult = await apiCall('/moments/build-mint', 'POST', {
  userUPAddress: UP_ADDRESS,
  collectionUP: COLLECTION_ADDRESS,
  metadataJson: { LSP4Metadata: { name, description, images: [...] }}
});

// 3. Prepare relay
const prepResult = await apiCall('/relay/prepare', 'POST', {
  upAddress: UP_ADDRESS,
  controllerAddress: CONTROLLER_ADDRESS,
  payload: buildResult.data.derived.upExecutePayload
});

// 4. Sign raw digest (CRITICAL!)
const signature = wallet.signingKey.sign(ethers.getBytes(prepResult.data.hashToSign));

// Submit
const submitResult = await apiCall('/relay/submit', 'POST', {
  upAddress: UP_ADDRESS,
  payload: buildResult.data.derived.upExecutePayload,
  signature: signature.serialized,
  nonce: prepResult.data.lsp15Request.transaction.nonce,
  validityTimestamps: prepResult.data.lsp15Request.transaction.validityTimestamps,
  relayerUrl: prepResult.data.relayerUrl
});

Negative Examples

WRONG: Using wrong signing method

// WRONG - adds EIP-191 prefix
await wallet.signMessage(hashToSign)

// CORRECT - sign raw bytes
wallet.signingKey.sign(ethers.getBytes(hashToSign))

WRONG: Wrong IPFS endpoint

// WRONG
POST /api/agent/v1/pinata

// CORRECT
POST /api/pinata  (no /agent/v1 prefix!)

Metadata

Stars1601
Views0
Updated2026-02-27
View Author Profile
AI Skill Finder

Not sure this is the right skill?

Describe what you want to build — we'll match you to the best skill from 16,000+ options.

Find the right skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-luksoagent-forever-moments": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.

Related Skills

stakingverse-ethereum

Stake ETH on StakeWise (Ethereum liquid staking). Use when the user wants to stake ETH, unstake ETH, or check staked positions on StakeWise V3 vaults. Supports state updates via keeper and harvest proofs from subgraph.

luksoagent 1601

lukso-expert

Comprehensive LUKSO blockchain knowledge base for AI agents. Makes any agent a LUKSO expert — covering all LSP standards (LSP0-LSP28), Universal Profiles, smart contract development, ecosystem projects, and developer tooling. USE WHEN: - Building on LUKSO (smart contracts, dApps, integrations) - Working with Universal Profiles (creation, permissions, metadata) - Deploying or interacting with LSP7/LSP8 tokens - Setting up gasless relay transactions (LSP25) - Managing KeyManager permissions (LSP6) - Working with The Grid (LSP28), Followers (LSP26), or any LSP standard - Answering questions about LUKSO ecosystem, projects, or architecture - Looking up contract addresses, ABIs, or API endpoints - Debugging LUKSO-specific issues (permissions, encoding, gas) DON'T USE WHEN: - Working with non-LUKSO EVM chains (use standard Ethereum patterns) - General Solidity questions unrelated to LSP standards

luksoagent 1601

lsp28-grid

Manage LSP28 The Grid on LUKSO Universal Profiles. Create, update, and manage grid layouts with mini-apps, iframes, and external links. Use when working with Universal Profile grids, LSP28 data encoding, VerifiableURI format, or The Grid feature on LUKSO.

luksoagent 1601

stakingverse-lukso

Stake LYX tokens on Stakingverse (LUKSO liquid staking). Use when the user wants to stake LYX, unstake LYX, claim rewards, or check sLYX balance on Stakingverse. Supports deposit, withdrawal requests, and oracle-claim pattern.

luksoagent 1601