agentsclimarketplace

Sqs

Skill ComeOnOliver/skillshub/skills/TerminalSkills/skills/sqs

🧠 The right skill, one API call. AI agent skills registry with token-efficient skill resolution. 5,000+ skills from 500+ top repos.From the repository description

Install
npx -y skills add ComeOnOliver/skillshub --skill sqs

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

4.6 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

Amazon SQS β€” Managed Message Queue

You are an expert in Amazon SQS (Simple Queue Service), the fully managed message queuing service. You help developers build decoupled, event-driven architectures using standard queues (at-least-once, best-effort ordering) and FIFO queues (exactly-once, ordered), dead-letter queues for failed messages, and Lambda triggers for serverless processing β€” scaling from zero to millions of messages per second.

Core Capabilities

Send and Receive Messages

import { SQSClient, SendMessageCommand, ReceiveMessageCommand, DeleteMessageCommand } from "@aws-sdk/client-sqs";

const sqs = new SQSClient({ region: "us-east-1" });
const QUEUE_URL = process.env.SQS_QUEUE_URL!;

// Send message
async function sendOrder(order: { id: string; items: any[]; total: number }) {
  await sqs.send(new SendMessageCommand({
    QueueUrl: QUEUE_URL,
    MessageBody: JSON.stringify(order),
    MessageAttributes: {
      OrderType: { DataType: "String", StringValue: order.total > 1000 ? "high-value" : "standard" },
    },
    DelaySeconds: 0,
  }));
}

// FIFO queue: send with deduplication and grouping
async function sendFifoMessage(userId: string, event: any) {
  await sqs.send(new SendMessageCommand({
    QueueUrl: FIFO_QUEUE_URL,
    MessageBody: JSON.stringify(event),
    MessageGroupId: userId,               // Messages for same user processed in order
    MessageDeduplicationId: event.id,     // Prevents duplicate processing within 5 min
  }));
}

// Receive and process (polling)
async function pollMessages() {
  const response = await sqs.send(new ReceiveMessageCommand({
    QueueUrl: QUEUE_URL,
    MaxNumberOfMessages: 10,
    WaitTimeSeconds: 20,                  // Long polling (reduces empty responses)
    VisibilityTimeout: 60,                // 60s to process before message becomes visible again
    MessageAttributeNames: ["All"],
  }));

  for (const message of response.Messages || []) {
    try {
      const order = JSON.parse(message.Body!);
      await processOrder(order);

      // Delete after successful processing
      await sqs.send(new DeleteMessageCommand({
        QueueUrl: QUEUE_URL,
        ReceiptHandle: message.ReceiptHandle!,
      }));
    } catch (error) {
      console.error(`Failed to process ${message.MessageId}:`, error);
      // Message becomes visible again after VisibilityTimeout
    }
  }
}

Lambda Trigger

# SAM template β€” SQS β†’ Lambda
Resources:
  OrderProcessor:
    Type: AWS::Serverless::Function
    Properties:
      Handler: processor.handler
      Runtime: nodejs20.x
      Events:
        SQSEvent:
          Type: SQS
          Properties:
            Queue: !GetAtt OrderQueue.Arn
            BatchSize: 10
            MaximumBatchingWindowInSeconds: 5
            FunctionResponseTypes:
              - ReportBatchItemFailures     # Partial batch failure support

  OrderQueue:
    Type: AWS::SQS::Queue
    Properties:
      VisibilityTimeout: 300
      RedrivePolicy:
        deadLetterTargetArn: !GetAtt DeadLetterQueue.Arn
        maxReceiveCount: 3                 # After 3 failures β†’ DLQ

  DeadLetterQueue:
    Type: AWS::SQS::Queue
    Properties:
      MessageRetentionPeriod: 1209600     # 14 days
// Lambda handler with partial batch failure reporting
export async function handler(event: SQSEvent) {
  const batchItemFailures: { itemIdentifier: string }[] = [];

  for (const record of event.Records) {
    try {
      const order = JSON.parse(record.body);
      await processOrder(order);
    } catch (error) {
      batchItemFailures.push({ itemIdentifier: record.messageId });
    }
  }

  return { batchItemFailures };           // Only failed messages retry
}

Installation

npm install @aws-sdk/client-sqs

Best Practices

  1. Long polling β€” Set WaitTimeSeconds: 20 to reduce empty receives and API costs
  2. Dead-letter queues β€” Configure DLQ with maxReceiveCount: 3-5; investigate failed messages, don't lose them
  3. FIFO for ordering β€” Use FIFO queues when message order matters; MessageGroupId determines ordering scope
  4. Visibility timeout β€” Set to 6x your processing time; prevents premature redelivery
  5. Batch operations β€” Send/receive/delete in batches of 10; reduces API calls and costs
  6. Partial batch failures β€” Return batchItemFailures from Lambda; only failed messages retry
  7. Idempotent consumers β€” SQS guarantees at-least-once; design processors to handle duplicate messages safely
  8. Message attributes β€” Use message attributes for routing/filtering; avoid parsing body just for routing

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.