ObjectStackObjectStack

Skill

Skill protocol schemas

Skill Trigger Condition Schema

Defines programmatic conditions under which a skill becomes active.

Allows context-aware activation based on object type, user role, etc.

Source: packages/spec/src/ai/skill.zod.ts

TypeScript Usage

import { Skill, SkillTriggerCondition } from '@objectstack/spec/ai';
import type { Skill, SkillTriggerCondition } from '@objectstack/spec/ai';

// Validate data
const result = Skill.parse(data);

Skill

Properties

PropertyTypeRequiredDescription
namestringSkill unique identifier (snake_case)
labelstringSkill display name
descriptionstringoptionalSkill description
instructionsstringoptionalLLM instructions when skill is active
toolsstring[]Tool names belonging to this skill (supports trailing wildcard, e.g. action_*)
triggerPhrasesstring[]optionalPhrases that activate this skill
triggerConditionsObject[]optionalProgrammatic activation conditions
permissionsstring[]optionalRequired permissions or roles
activebooleanWhether the skill is enabled
protectionObjectoptionalPackage author protection block — lock policy for this skill.
_lockEnum<'none' | 'no-overlay' | 'no-delete' | 'full'>optionalItem-level lock — controls overlay & delete (ADR-0010).
_lockReasonstringoptionalHuman-readable reason shown when a write is refused by _lock.
_lockSourceEnum<'artifact' | 'package' | 'env-forced'>optionalLayer that set _lock (artifact
_provenanceEnum<'package' | 'org' | 'env-forced'>optionalOrigin of the item (package
_packageIdstringoptionalOwning package machine id.
_packageVersionstringoptionalOwning package version.
_lockDocsUrlstringoptionalOptional documentation link surfaced next to _lockReason.

SkillTriggerCondition

Properties

PropertyTypeRequiredDescription
fieldstringContext field to evaluate
operatorEnum<'eq' | 'neq' | 'in' | 'not_in' | 'contains'>Comparison operator
valuestring | string[]Expected value or values

On this page