ai-service-layer
Toolkit-first AIClient patterns for generation, text-to-sql, and response parsing.
How do I install this agent skill?
npx skills add https://github.com/stahura/domo-ai-vibe-rules --skill ai-service-layerIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides implementation patterns for a toolkit-first AI client focused on text generation and SQL conversion. It includes instructions for installing a library for a well-known platform and managing its static methods. Security considerations involve the ingestion of AI-generated content and dependency management.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
- ZeroLeakspass
Score: 93/100 · 2 sections analyzed
What does this agent skill do?
Rule: Domo App Platform AI (Toolkit-First)
This rule is toolkit-first. Use AIClient from @domoinc/toolkit.
Canonical Client
yarn add @domoinc/toolkit
import { AIClient } from '@domoinc/toolkit';
Critical: AIClient methods are static
Do not instantiate AIClient for these methods.
Wrong:
const ai = new AIClient();
await ai.text_to_sql('...');
Correct:
await AIClient.text_to_sql('...');
Text Generation
const response = await AIClient.generate_text(
'Explain this sales trend in simple terms',
{ template: 'You are a business analyst. ${input}' },
{ tone: 'professional' },
undefined,
{ temperature: 0.7 }
);
const body = response.data || response.body || response;
const text = body.output || body.choices?.[0]?.output;
Additional AI Methods
text_to_sql schema argument must be an array
Wrong:
await AIClient.text_to_sql('Show top vendors by spend', {
dataSourceName: 'vendorPayments',
columns: [{ name: 'amount', type: 'number' }]
});
Correct:
await AIClient.text_to_sql('Show top vendors by spend', [
{
dataSourceName: 'vendorPayments',
description: 'Vendor payment invoices',
columns: [
{ name: 'vendor', type: 'string' },
{ name: 'amount', type: 'number' },
{ name: 'date', type: 'date' }
]
}
]);
Signature reference
(Approximate; check installed toolkit typings for exact current signature.)
AIClient.text_to_sql(
input: string,
dataSourceSchemas?: DataSourceSchema[], // array
promptTemplate?: any,
parameters?: Record<string, string>,
model?: string,
modelConfiguration?: Record<string, Object>
): Promise<Response<TextAIResponse>>;
Why array: this supports multi-table SQL generation (including join-aware SQL) when multiple schemas are provided.
text_to_sql usage note
text_to_sql is great for ad-hoc SQL, but /sql/v1 does not automatically apply dashboard/page filters.
If filter-awareness is required in embedded cards, use Query API (/data/v1 via @domoinc/query) for execution.
const sqlResult = await AIClient.text_to_sql('Show total sales by region', [
{
dataSourceName: 'Sales',
description: 'Sales transactions',
columns: [{ name: 'region', type: 'string' }, { name: 'amount', type: 'number' }]
}
]);
const beastModeResult = await AIClient.text_to_beastmode(
'Calculate year over year growth percentage',
{ dataSourceName: 'Revenue', columns: [{ name: 'revenue', type: 'number' }, { name: 'date', type: 'date' }] }
);
Response Handling Rule
AIClient responses are not always shaped like other toolkit clients:
- often uses
response.data - may include both
outputandchoices
Use defensive parsing plus a strict string guard:
const body = response?.data ?? response?.body ?? response;
const outputCandidate = body?.output ?? body?.choices?.[0]?.output;
const output = typeof outputCandidate === 'string' ? outputCandidate.trim() : '';
if (!output) throw new Error('AI returned no usable output');
Checklist
-
AIClientmethods use snake_case (generate_text,text_to_sql, etc.) -
AIClientmethods are called statically (for exampleAIClient.text_to_sql(...), not instance methods) -
AIClient.text_to_sqlsecond argument isDataSourceSchema[](array), not a single object - Responses parsed from
data/bodyfallback - Output extraction includes string guard and empty-output handling
- Error handling and loading state in UI
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/stahura/domo-ai-vibe-rules/ai-service-layer">View ai-service-layer on skillZs</a>