[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CWGC8B0EX7NWEB7P7XCCPZ":3,"skill-same:01M6CWGC8B0EX7NWEB7P7XCCPZ":51},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":31,"commitSha":32,"skillDirectory":5,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":6,"ownerHtmlUrl":35,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":36,"install":37,"resources":50},"01M6CWGC8B0EX7NWEB7P7XCCPZ","aws",null,"Amazon Web Services best practices and patterns","ffsshhttiikk\u002Fopencode-agents-skills","ffsshhttiikk","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F226346827?v=4","01M6CWD9RR3Y7VRQX3MXYC8FYH","01M6CWD9WVPYAZW0J82G1VKGHY",3,"MIT","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Faws\u002FSKILL.md",[],[5,18,19,20,21,22,23],"web","best practices","cloud","services","opencode","patterns","2026-11-10 10:12:30",false,"---\nname: aws\ndescription: Amazon Web Services best practices and patterns\nlicense: MIT\ncompatibility: opencode\nmetadata:\n  audience: developers\n  category: cloud\n---\n## What I do\n- Design and implement AWS architectures\n- Use IAM for secure access control\n- Leverage EC2, ECS, and Lambda for compute\n- Use S3, RDS, and DynamoDB for storage\n- Implement serverless with API Gateway and Lambda\n- Use CloudFormation or CDK for infrastructure\n- Set up monitoring with CloudWatch\n- Implement security best practices\n\n## When to use me\nWhen working with AWS services or designing cloud architectures.\n\n## IAM Best Practices\n```python\nimport boto3\nfrom iam_roles import create_role_with_policy\n\n\n# Create IAM role with least privilege\niam = boto3.client('iam')\n\n\ndef create_lambda_role(function_name: str) -> str:\n    assume_policy = {\n        \"Version\": \"2012-10-17\",\n        \"Statement\": [\n            {\n                \"Effect\": \"Allow\",\n                \"Principal\": {\"Service\": \"lambda.amazonaws.com\"},\n                \"Action\": \"sts:AssumeRole\"\n            }\n        ]\n    }\n\n    role = iam.create_role(\n        RoleName=f'{function_name}-role',\n        AssumeRolePolicyDocument=json.dumps(assume_policy),\n        Description=f'IAM role for {function_name}',\n    )\n\n    # Attach only necessary policies\n    policies = [\n        'arn:aws:iam::aws:policy\u002Fservice-role\u002FAWSLambdaBasicExecutionRole',\n    ]\n\n    for policy in policies:\n        iam.attach_role_policy(\n            RoleName=role['Role']['RoleName'],\n            PolicyArn=policy,\n        )\n\n    return role['Role']['Arn']\n```\n\n## S3 Best Practices\n```python\nimport boto3\n\n\ns3 = boto3.client('s3')\n\n\ndef upload_with_encryption(\n    bucket: str,\n    key: str,\n    body: bytes,\n    metadata: dict = None\n) -> str:\n    \"\"\"Upload file with server-side encryption.\"\"\"\n    params = {\n        'Bucket': bucket,\n        'Key': key,\n        'Body': body,\n        'ServerSideEncryption': 'AES256',\n        'ACL': 'private',\n    }\n\n    if metadata:\n        params['Metadata'] = metadata\n\n    response = s3.put_object(**params)\n    return response['VersionId']\n\n\ndef generate_presigned_url(\n    bucket: str,\n    key: str,\n    expiration: int = 3600\n) -> str:\n    \"\"\"Generate pre-signed URL for temporary access.\"\"\"\n    return s3.generate_presigned_url(\n        'get_object',\n        Params={\n            'Bucket': bucket,\n            'Key': key,\n        },\n        ExpiresIn=expiration,\n    )\n\n\n# S3 lifecycle policy for cost optimization\ndef create_lifecycle_policy():\n    lifecycle = {\n        'Rules': [\n            {\n                'ID': 'DeleteOldLogs',\n                'Status': 'Enabled',\n                'Prefix': 'logs\u002F',\n                'Expiration': {'Days': 90},\n                'Transitions': [\n                    {'Days': 30, 'StorageClass': 'STANDARD_IA'},\n                    {'Days': 60, 'StorageClass': 'GLACIER'},\n                ],\n            }\n        ]\n    }\n    s3.put_bucket_lifecycle_configuration(\n        Bucket='my-bucket',\n        LifecycleConfiguration=lifecycle,\n    )\n```\n\n## Lambda Best Practices\n```python\nimport json\nimport boto3\nfrom typing import Dict, Any\n\n\nlambda_client = boto3.client('lambda')\n\n\ndef invoke_lambda_async(\n    function_name: str,\n    payload: Dict[str, Any]\n) -> str:\n    \"\"\"Invoke Lambda asynchronously with Event invocation.\"\"\"\n    response = lambda_client.invoke(\n        FunctionName=function_name,\n        InvocationType='Event',\n        Payload=json.dumps(payload),\n    )\n    return response['StatusCode']\n\n\ndef invoke_lambda_sync(\n    function_name: str,\n    payload: Dict[str, Any],\n    timeout: int = 900\n) -> Dict[str, Any]:\n    \"\"\"Invoke Lambda synchronously and wait for response.\"\"\"\n    response = lambda_client.invoke(\n        FunctionName=function_name,\n        InvocationType='RequestResponse',\n        Payload=json.dumps(payload),\n        Qualifier='$LATEST',\n    )\n\n    if response['StatusCode'] != 200:\n        raise Exception(f'Lambda invocation failed: {response}')\n\n    return json.loads(response['Payload'].read())\n```\n\n## DynamoDB Best Practices\n```python\nimport boto3\nfrom boto3.dynamodb.conditions import Key, Attr\n\n\ndynamodb = boto3.resource('dynamodb')\n\n\ndef create_table_with_gsi():\n    table = dynamodb.create_table(\n        TableName='Orders',\n        KeySchema=[\n            {'AttributeName': 'customer_id', 'KeyType': 'HASH'},\n            {'AttributeName': 'order_date', 'KeyType': 'RANGE'},\n        ],\n        AttributeDefinitions=[\n            {'AttributeName': 'customer_id', 'AttributeType': 'S'},\n            {'AttributeName': 'order_date', 'AttributeType': 'S'},\n            {'AttributeName': 'status', 'AttributeType': 'S'},\n        ],\n        GlobalSecondaryIndexes=[\n            {\n                'IndexName': 'StatusIndex',\n                'KeySchema': [\n                    {'AttributeName': 'status', 'KeyType': 'HASH'},\n                    {'AttributeName': 'order_date', 'KeyType': 'RANGE'},\n                ],\n                'Projection': {'ProjectionType': 'ALL'},\n                'ProvisionedThroughput': {\n                    'ReadCapacityUnits': 10,\n                    'WriteCapacityUnits': 10,\n                },\n            }\n        ],\n        ProvisionedThroughput={\n            'ReadCapacityUnits': 10,\n            'WriteCapacityUnits': 10,\n        },\n    )\n    return table\n\n\ndef query_with_pagination(\n    table_name: str,\n    key_condition: dict,\n    filter_expression: dict = None,\n    limit: int = 100\n) -> list:\n    \"\"\"Query with automatic pagination.\"\"\"\n    table = dynamodb.Table(table_name)\n    items = []\n\n    response = table.query(\n        KeyConditionExpression=Key('pk').eq(key_condition['pk']),\n        FilterExpression=Attr('status').eq('active') if filter_expression else None,\n        Limit=limit,\n    )\n\n    items.extend(response.get('Items', []))\n\n    while 'LastEvaluatedKey' in response:\n        response = table.query(\n            KeyConditionExpression=Key('pk').eq(key_condition['pk']),\n            ExclusiveStartKey=response['LastEvaluatedKey'],\n        )\n        items.extend(response.get('Items', []))\n\n    return items\n```\n\n## Serverless Architecture\n```yaml\n# serverless.yml\nservice: my-serverless-app\n\nprovider:\n  name: aws\n  runtime: python3.11\n  stage: ${opt:stage, 'dev'}\n  region: ${opt:region, 'us-east-1'}\n  lambdaHashingVersion: 20201221\n  environment:\n    STAGE: ${self:provider.stage}\n    DYNAMODB_TABLE: ${self:service}-${self:provider.stage}\n  iam:\n    role:\n      statements:\n        - Effect: Allow\n          Action:\n            - dynamodb:Query\n            - dynamodb:Scan\n            - dynamodb:GetItem\n            - dynamodb:PutItem\n          Resource:\n            - !GetAtt DynamoDBTable.Arn\n            - !Join ['\u002F', [!GetAtt DynamoDBTable.Arn, 'index\u002F*']]\n        - Effect: Allow\n          Action:\n            - sqs:*\n          Resource: !GetAtt SQSQueue.Arn\n\nfunctions:\n  processOrder:\n    handler: handlers\u002Fprocess_order.handler\n    timeout: 30\n    memorySize: 256\n    events:\n      - http:\n          path: orders\n          method: post\n          cors: true\n      - sqs:\n          - arn: !GetAtt SQSQueue.Arn\n\n  getOrder:\n    handler: handlers\u002Fget_order.handler\n    timeout: 10\n    events:\n      - http:\n          path: orders\u002F{orderId}\n          method: get\n\nresources:\n  Resources:\n    DynamoDBTable:\n      Type: AWS::DynamoDB::Table\n      Properties:\n        TableName: ${self:provider.environment.DYNAMODB_TABLE}\n        BillingMode: PAY_PER_REQUEST\n        AttributeDefinitions:\n          - AttributeName: pk\n            AttributeType: S\n          - AttributeName: sk\n            AttributeType: S\n        KeySchema:\n          - AttributeName: pk\n            KeyType: HASH\n          - AttributeName: sk\n            KeyType: RANGE\n        GlobalSecondaryIndexes:\n          - IndexName: GSI1\n            KeySchema:\n              - AttributeName: pk\n                KeyType: HASH\n              - AttributeName: sk\n                KeyType: RANGE\n            Projection:\n              ProjectionType: ALL\n\n    SQSQueue:\n      Type: AWS::SQS::Queue\n      Properties:\n        QueueName: ${self:service}-queue-${self:provider.stage}\n        VisibilityTimeout: 360\n        MessageRetentionPeriod: 86400\n```\n","## What I do\n- Design and implement AWS architectures\n- Use IAM for secure access control\n- Leverage EC2, ECS, and Lambda for compute\n- Use S3, RDS, and DynamoDB for storage\n- Implement serverless with API Gateway and Lambda\n- Use CloudFormation or CDK for infrastructure\n- Set up monitoring with CloudWatch\n- Implement security best practices\n\n## When to use me\nWhen working with AWS services or designing cloud architectures.\n\n## IAM Best Practices\n```python\nimport boto3\nfrom iam_roles import create_role_with_policy\n\n\n# Create IAM role with least privilege\niam = boto3.client('iam')\n\n\ndef create_lambda_role(function_name: str) -> str:\n    assume_policy = {\n        \"Version\": \"2012-10-17\",\n        \"Statement\": [\n            {\n                \"Effect\": \"Allow\",\n                \"Principal\": {\"Service\": \"lambda.amazonaws.com\"},\n                \"Action\": \"sts:AssumeRole\"\n            }\n        ]\n    }\n\n    role = iam.create_role(\n        RoleName=f'{function_name}-role',\n        AssumeRolePolicyDocument=json.dumps(assume_policy),\n        Description=f'IAM role for {function_name}',\n    )\n\n    # Attach only necessary policies\n    policies = [\n        'arn:aws:iam::aws:policy\u002Fservice-role\u002FAWSLambdaBasicExecutionRole',\n    ]\n\n    for policy in policies:\n        iam.attach_role_policy(\n            RoleName=role['Role']['RoleName'],\n            PolicyArn=policy,\n        )\n\n    return role['Role']['Arn']\n```\n\n## S3 Best Practices\n```python\nimport boto3\n\n\ns3 = boto3.client('s3')\n\n\ndef upload_with_encryption(\n    bucket: str,\n    key: str,\n    body: bytes,\n    metadata: dict = None\n) -> str:\n    \"\"\"Upload file with server-side encryption.\"\"\"\n    params = {\n        'Bucket': bucket,\n        'Key': key,\n        'Body': body,\n        'ServerSideEncryption': 'AES256',\n        'ACL': 'private',\n    }\n\n    if metadata:\n        params['Metadata'] = metadata\n\n    response = s3.put_object(**params)\n    return response['VersionId']\n\n\ndef generate_presigned_url(\n    bucket: str,\n    key: str,\n    expiration: int = 3600\n) -> str:\n    \"\"\"Generate pre-signed URL for temporary access.\"\"\"\n    return s3.generate_presigned_url(\n        'get_object',\n        Params={\n            'Bucket': bucket,\n            'Key': key,\n        },\n        ExpiresIn=expiration,\n    )\n\n\n# S3 lifecycle policy for cost optimization\ndef create_lifecycle_policy():\n    lifecycle = {\n        'Rules': [\n            {\n                'ID': 'DeleteOldLogs',\n                'Status': 'Enabled',\n                'Prefix': 'logs\u002F',\n                'Expiration': {'Days': 90},\n                'Transitions': [\n                    {'Days': 30, 'StorageClass': 'STANDARD_IA'},\n                    {'Days': 60, 'StorageClass': 'GLACIER'},\n                ],\n            }\n        ]\n    }\n    s3.put_bucket_lifecycle_configuration(\n        Bucket='my-bucket',\n        LifecycleConfiguration=lifecycle,\n    )\n```\n\n## Lambda Best Practices\n```python\nimport json\nimport boto3\nfrom typing import Dict, Any\n\n\nlambda_client = boto3.client('lambda')\n\n\ndef invoke_lambda_async(\n    function_name: str,\n    payload: Dict[str, Any]\n) -> str:\n    \"\"\"Invoke Lambda asynchronously with Event invocation.\"\"\"\n    response = lambda_client.invoke(\n        FunctionName=function_name,\n        InvocationType='Event',\n        Payload=json.dumps(payload),\n    )\n    return response['StatusCode']\n\n\ndef invoke_lambda_sync(\n    function_name: str,\n    payload: Dict[str, Any],\n    timeout: int = 900\n) -> Dict[str, Any]:\n    \"\"\"Invoke Lambda synchronously and wait for response.\"\"\"\n    response = lambda_client.invoke(\n        FunctionName=function_name,\n        InvocationType='RequestResponse',\n        Payload=json.dumps(payload),\n        Qualifier='$LATEST',\n    )\n\n    if response['StatusCode'] != 200:\n        raise Exception(f'Lambda invocation failed: {response}')\n\n    return json.loads(response['Payload'].read())\n```\n\n## DynamoDB Best Practices\n```python\nimport boto3\nfrom boto3.dynamodb.conditions import Key, Attr\n\n\ndynamodb = boto3.resource('dynamodb')\n\n\ndef create_table_with_gsi():\n    table = dynamodb.create_table(\n        TableName='Orders',\n        KeySchema=[\n            {'AttributeName': 'customer_id', 'KeyType': 'HASH'},\n            {'AttributeName': 'order_date', 'KeyType': 'RANGE'},\n        ],\n        AttributeDefinitions=[\n            {'AttributeName': 'customer_id', 'AttributeType': 'S'},\n            {'AttributeName': 'order_date', 'AttributeType': 'S'},\n            {'AttributeName': 'status', 'AttributeType': 'S'},\n        ],\n        GlobalSecondaryIndexes=[\n            {\n                'IndexName': 'StatusIndex',\n                'KeySchema': [\n                    {'AttributeName': 'status', 'KeyType': 'HASH'},\n                    {'AttributeName': 'order_date', 'KeyType': 'RANGE'},\n                ],\n                'Projection': {'ProjectionType': 'ALL'},\n                'ProvisionedThroughput': {\n                    'ReadCapacityUnits': 10,\n                    'WriteCapacityUnits': 10,\n                },\n            }\n        ],\n        ProvisionedThroughput={\n            'ReadCapacityUnits': 10,\n            'WriteCapacityUnits': 10,\n        },\n    )\n    return table\n\n\ndef query_with_pagination(\n    table_name: str,\n    key_condition: dict,\n    filter_expression: dict = None,\n    limit: int = 100\n) -> list:\n    \"\"\"Query with automatic pagination.\"\"\"\n    table = dynamodb.Table(table_name)\n    items = []\n\n    response = table.query(\n        KeyConditionExpression=Key('pk').eq(key_condition['pk']),\n        FilterExpression=Attr('status').eq('active') if filter_expression else None,\n        Limit=limit,\n    )\n\n    items.extend(response.get('Items', []))\n\n    while 'LastEvaluatedKey' in response:\n        response = table.query(\n            KeyConditionExpression=Key('pk').eq(key_condition['pk']),\n            ExclusiveStartKey=response['LastEvaluatedKey'],\n        )\n        items.extend(response.get('Items', []))\n\n    return items\n```\n\n## Serverless Architecture\n```yaml\n# serverless.yml\nservice: my-serverless-app\n\nprovider:\n  name: aws\n  runtime: python3.11\n  stage: ${opt:stage, 'dev'}\n  region: ${opt:region, 'us-east-1'}\n  lambdaHashingVersion: 20201221\n  environment:\n    STAGE: ${self:provider.stage}\n    DYNAMODB_TABLE: ${self:service}-${self:provider.stage}\n  iam:\n    role:\n      statements:\n        - Effect: Allow\n          Action:\n            - dynamodb:Query\n            - dynamodb:Scan\n            - dynamodb:GetItem\n            - dynamodb:PutItem\n          Resource:\n            - !GetAtt DynamoDBTable.Arn\n            - !Join ['\u002F', [!GetAtt DynamoDBTable.Arn, 'index\u002F*']]\n        - Effect: Allow\n          Action:\n            - sqs:*\n          Resource: !GetAtt SQSQueue.Arn\n\nfunctions:\n  processOrder:\n    handler: handlers\u002Fprocess_order.handler\n    timeout: 30\n    memorySize: 256\n    events:\n      - http:\n          path: orders\n          method: post\n          cors: true\n      - sqs:\n          - arn: !GetAtt SQSQueue.Arn\n\n  getOrder:\n    handler: handlers\u002Fget_order.handler\n    timeout: 10\n    events:\n      - http:\n          path: orders\u002F{orderId}\n          method: get\n\nresources:\n  Resources:\n    DynamoDBTable:\n      Type: AWS::DynamoDB::Table\n      Properties:\n        TableName: ${self:provider.environment.DYNAMODB_TABLE}\n        BillingMode: PAY_PER_REQUEST\n        AttributeDefinitions:\n          - AttributeName: pk\n            AttributeType: S\n          - AttributeName: sk\n            AttributeType: S\n        KeySchema:\n          - AttributeName: pk\n            KeyType: HASH\n          - AttributeName: sk\n            KeyType: RANGE\n        GlobalSecondaryIndexes:\n          - IndexName: GSI1\n            KeySchema:\n              - AttributeName: pk\n                KeyType: HASH\n              - AttributeName: sk\n                KeyType: RANGE\n            Projection:\n              ProjectionType: ALL\n\n    SQSQueue:\n      Type: AWS::SQS::Queue\n      Properties:\n        QueueName: ${self:service}-queue-${self:provider.stage}\n        VisibilityTimeout: 360\n        MessageRetentionPeriod: 86400\n```\n",{"name":5,"license":14,"metadata":29,"description":7,"compatibility":22},{"audience":30,"category":20},"developers","main","5f7a3e453c98261f93d19a6a7de44ad8f7b72d41",2,"https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk","2026-03-01 06:55:40",{"source":8,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill aws",{"tool":43,"command":44},"bunx","bunx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill aws",{"tool":46,"command":47},"pnpm","pnpm dlx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill aws","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Faws\u002FSKILL.md",true,[],[52,63,73,82,92,101],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":24},"01M6CXT9TXDF79BWJTMQAPB49G","xamarin","Xamarin cross-platform development","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fxamarin\u002FSKILL.md",[],[54,59,60,61,22,62],"platform","cross-platform","mobile","development",{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":24},"01M6CXT8AD04MFYDA32VW3FKAG","wrangling","Data wrangling fundamentals","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwrangling\u002FSKILL.md",[],[65,70,22,71,72],"data wrangling","science","data",{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":24},"01M6CXT717GCN7SRRNPBDP4508","windows","Windows operating system administration and scripting","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwindows\u002FSKILL.md",[],[75,80,22,81],"system","scripting",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":24},"01M6CXT54K794NMEM3XAPZZDKT","wide-column","Wide-column data model","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column\u002FSKILL.md",[],[89,90,22,91,72],"wide column","databases","model",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":24},"01M6CXT28FMT2P4V9GZE67WA8E","wide-column-stores","Wide-column database stores","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column-stores\u002FSKILL.md",[],[99,90,22,100],"wide column stores","database",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":24},"01M6CXT0D0M0Q4T2N7C2RX7DSN","websockets","WebSocket implementation and best practices","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwebsockets\u002FSKILL.md",[],[103,108,109,110,22,19,111],"websocket","real-time","time","implementation"]