TextSkill
KIT · interface · Type contract
Loaded skill: registration plus the parsed document text.
Import
ts
import type { TextSkill } from '@jangts/agent-core/kits/text-skills';js
/** @typedef {import('@jangts/agent-core/kits/text-skills').TextSkill} TextSkill */Other public entry points:@jangts/agent-core, @jangts/agent-core/types, @jangts/agent-core/structs, @jangts/agent-core/kits/text-skills, @jangts/agent-core/kits.
Definition
ts
interface TextSkillExtends or implements: TextSkillRegistration.
Field structure
| Field | Type | Required | Description |
|---|---|---|---|
description | string | Required | Read-only. Description taken from the document header and matching the registration. |
instructions | string | Required | Read-only. Instruction body without the header, bounded by maxInstructionChars. |
id | string | Required | Read-only. Skill id, lowercase kebab case, bounded by maxIdChars (64 by default). |
entry | string | Required | Read-only. Document path; must equal the loader's entryFor(id) result. |
kind | "text-workflow" | Required | Read-only. Only text workflow skills are supported. |
toolIds | readonly string[] | Required | Read-only. Tool ids the instructions may reference; validated by the caller, not executed here. |
Examples
- TextSkills: read-only text Skills: Validate registered text work instructions that the App reads; code inside the files is never executed.
Read one text Skill from an explicit source
Beginner · Node.js
ts
import { TextSkills } from '@jangts/agent-core/kits/text-skills';
const documents = new Map([['summarize/SKILL.md', '---\nname: summarize\ndescription: 汇总已读取资料\n---\n只根据已确认资料总结。']]);
const loader = TextSkills.defineTextSkillLoader({ maxInstructionChars: 2000, maxDescriptionChars: 120 });
const skills = loader.load({ entries: [{ id: 'summarize', entry: 'summarize/SKILL.md', kind: 'text-workflow', toolIds: [] }] }, {
read(entry) { const text = documents.get(entry); if (!text) throw new Error('来源未登记'); return text; },
});
console.log(skills[0].description);js
import { TextSkills } from '@jangts/agent-core/kits/text-skills';
const documents = new Map([['summarize/SKILL.md', '---\nname: summarize\ndescription: 汇总已读取资料\n---\n只根据已确认资料总结。']]);
const loader = TextSkills.defineTextSkillLoader({ maxInstructionChars: 2000, maxDescriptionChars: 120 });
const skills = loader.load({ entries: [{ id: 'summarize', entry: 'summarize/SKILL.md', kind: 'text-workflow', toolIds: [] }] }, {
read(entry) { const text = documents.get(entry); if (!text)
throw new Error('来源未登记'); return text; },
});
console.log(skills[0].description);Add the application's own entry convention to the same loader
Configuration · Node.js
Entry rules and tool references are only registration checks; the actual tools still need to be registered and authorized by the application.
ts
import { TextSkills } from '@jangts/agent-core/kits/text-skills';
const documents = new Map([['skills/summarize.md', '---\nname: summarize\ndescription: 汇总已读取资料\n---\n只根据已确认资料总结。']]);
const loader = TextSkills.defineTextSkillLoader({ maxInstructionChars: 2000, maxDescriptionChars: 120, maxIdChars: 32, entryFor: id => 'skills/' + id + '.md' });
const skills = loader.load({ entries: [{ id: 'summarize', entry: 'skills/summarize.md', kind: 'text-workflow', toolIds: ['read-source'] }] }, {
read(entry) { const text = documents.get(entry); if (!text) throw new Error('来源未登记'); return text; },
});
console.log(skills[0].toolIds);js
import { TextSkills } from '@jangts/agent-core/kits/text-skills';
const documents = new Map([['skills/summarize.md', '---\nname: summarize\ndescription: 汇总已读取资料\n---\n只根据已确认资料总结。']]);
const loader = TextSkills.defineTextSkillLoader({ maxInstructionChars: 2000, maxDescriptionChars: 120, maxIdChars: 32, entryFor: id => 'skills/' + id + '.md' });
const skills = loader.load({ entries: [{ id: 'summarize', entry: 'skills/summarize.md', kind: 'text-workflow', toolIds: ['read-source'] }] }, {
read(entry) { const text = documents.get(entry); if (!text)
throw new Error('来源未登记'); return text; },
});
console.log(skills[0].toolIds);