Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Ainative Chat Completions

v1.0.0

Help agents build conversational AI with AINative's Chat Completions API. Use when (1) Building a chatbot or AI assistant, (2) Implementing streaming respons...

0· 98·1 current·1 all-time
byToby Morning@urbantech

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for urbantech/ainative-chat-completions.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Ainative Chat Completions" (urbantech/ainative-chat-completions) from ClawHub.
Skill page: https://clawhub.ai/urbantech/ainative-chat-completions
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install ainative-chat-completions

ClawHub CLI

Package manager switcher

npx clawhub@latest install ainative-chat-completions
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name and description match the SKILL.md content: examples for raw HTTP, Python, React and Next.js SDK usage of AINative's chat completions API. The skill does not declare unrelated env vars, binaries, or installs, which is proportionate for documentation/example content.
Instruction Scope
Instructions are limited to making HTTP requests, using SDK hooks, and streaming SSE; they do not instruct reading arbitrary files or unrelated system state. One caveat: the examples include system messages (e.g., "You are a helpful assistant."), which is expected for chat-completion examples but triggered a pattern scanner for 'system-prompt-override' — likely a benign example but worth being aware of (see scan findings).
Install Mechanism
No install spec and no bundled code — instruction-only. This minimizes risk because nothing is written to disk by the skill itself.
Credentials
The SKILL.md shows use of an AINative API key (X-API-Key or process.env.AINATIVE_API_KEY) in examples. The skill does not require or request unrelated credentials or system config paths; requiring an API key is proportional to the documented usage.
Persistence & Privilege
always is false and there is no install step or code that requests persistent presence or modifies other skills or system settings.
Scan Findings in Context
[system-prompt-override] expected: The SKILL.md contains example system messages (e.g., "You are a helpful assistant.") and frontmatter metadata; that pattern can trigger a 'system-prompt-override' detector even though here it's used as a normal example. Treat this as a likely false positive but remain cautious about any hidden or elevated system-prompt instructions in third-party skills.
Assessment
This skill is documentation/example code for AINative's chat completions and is internally consistent. Before using it: (1) be prepared to supply your AINative API key when you run the examples — the skill itself doesn't store or request keys but the API calls require them; (2) do not paste secrets or sensitive data into prompts that will be sent to the AINative API; (3) verify you install SDK packages (@ainative/react-sdk, @ainative/next-sdk) from trusted sources (npmjs.org or your vetted private registry) and confirm the API endpoint (api.ainative.studio) matches the official provider; (4) note the scanner flagged a 'system-prompt-override' pattern — this appears to be a benign example of a system message, but always review any skill content that instructs agents on system prompts or message manipulation; (5) if you need higher assurance, request the skill author/publisher identity and confirm the SDK package repositories and docs referenced in the SKILL.md are official.
!
SKILL.md:81
Prompt-injection style instruction pattern detected.
About static analysis
These patterns were detected by automated regex scanning. They may be normal for skills that integrate with external APIs. Check the VirusTotal and OpenClaw results above for context-aware analysis.

Like a lobster shell, security has layers — review code before you run it.

latestvk97dmxh240qjwfq957sgkhkj9x83gck1
98downloads
0stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

AINative Chat Completions

Endpoint

POST https://api.ainative.studio/v1/public/chat/completions

Auth: X-API-Key: ak_... or Authorization: Bearer <jwt>

Basic Request

import requests

response = requests.post(
    "https://api.ainative.studio/v1/public/chat/completions",
    headers={"X-API-Key": "ak_your_key"},
    json={
        "model": "claude-3-5-sonnet-20241022",
        "messages": [
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "What is ZeroDB?"}
        ],
        "temperature": 0.7,
        "max_tokens": 1024
    }
)
data = response.json()
print(data["choices"][0]["message"]["content"])
print(f"Tokens used: {data['usage']['total_tokens']}")

Streaming (SSE)

import requests

with requests.post(
    "https://api.ainative.studio/v1/public/chat/completions",
    headers={"X-API-Key": "ak_your_key"},
    json={"model": "claude-3-5-sonnet-20241022",
          "messages": [{"role": "user", "content": "Count to 5"}],
          "stream": True},
    stream=True
) as resp:
    for line in resp.iter_lines():
        if line and line.startswith(b"data: "):
            chunk = line[6:]
            if chunk != b"[DONE]":
                import json
                delta = json.loads(chunk)["choices"][0]["delta"]
                print(delta.get("content", ""), end="", flush=True)

React SDK — useChat Hook

npm install @ainative/react-sdk
import { AINativeProvider, useChat } from '@ainative/react-sdk';

function App() {
  return (
    <AINativeProvider config={{ apiKey: 'ak_your_key' }}>
      <ChatComponent />
    </AINativeProvider>
  );
}

function ChatComponent() {
  const { messages, sendMessage, isLoading, error } = useChat({
    model: 'claude-3-5-sonnet-20241022',
    systemPrompt: 'You are a helpful assistant.',
  });

  const handleSend = () => sendMessage('Hello!');

  return (
    <div>
      {messages.map((msg, i) => (
        <div key={i}><b>{msg.role}:</b> {msg.content}</div>
      ))}
      <button onClick={handleSend} disabled={isLoading}>
        {isLoading ? 'Thinking...' : 'Send'}
      </button>
      {error && <p>Error: {error.message}</p>}
    </div>
  );
}

Next.js — Server Action + Streaming

npm install @ainative/next-sdk
// app/api/chat/route.ts
import { createServerClient } from '@ainative/next-sdk/server';

export async function POST(request: Request) {
  const { messages } = await request.json();
  const client = createServerClient({ apiKey: process.env.AINATIVE_API_KEY! });

  const stream = await client.chat.completions.create({
    model: 'claude-3-5-sonnet-20241022',
    messages,
    stream: true,
  });

  return new Response(stream.body, {
    headers: { 'Content-Type': 'text/event-stream' }
  });
}

Available Models

ModelContextBest For
claude-3-5-sonnet-20241022200kGeneral purpose (default)
claude-3-5-haiku-20241022200kFast, low cost
claude-3-opus-20240229200kComplex reasoning
gpt-4o128kOpenAI fallback

Request Parameters

ParameterTypeDefaultDescription
modelstringrequiredModel ID
messagesarrayrequiredConversation history
streambooleanfalseEnable SSE streaming
temperaturefloat0.7Randomness (0-1)
max_tokensint1024Max response length
systemstringSystem prompt (alternative)

Credit Costs

Credits are consumed per token. Check balance before high-volume usage:

balance = requests.get(
    "https://api.ainative.studio/api/v1/public/credits/balance",
    headers={"X-API-Key": "ak_your_key"}
).json()
print(f"Remaining: {balance['remaining_credits']}")

Error Handling

StatusMeaningAction
401Invalid API keyCheck key format: ak_...
402Insufficient creditsTop up or upgrade plan
429Rate limitBack off, retry with exponential delay
503Model unavailableRetry or use fallback model

References

  • docs/api/CHAT_COMPLETION_API_REFERENCE.md (757 lines — full spec)
  • src/backend/app/api/v1/endpoints/managed_chat.py
  • packages/sdks/react/src/hooks/useChat.ts
  • packages/sdks/nextjs/src/

Comments

Loading comments...