Status: Active
Date: 2026-06-14
Author: Cytognosis Foundation
Audience: engineers, contributors
Tags: quick-reference, core, cytoskills
@cytognosis/cyto-skills — Quick Reference
One line: Core library for the cytoskills monorepo. Owns SKILL.md parsing, skill discovery, CSO classification, quality judging, tagging, and agent management.
Full doc: core.md
Key Concepts
| Term |
Definition |
| BaseSkill |
Class wrapping a parsed skill directory. The main handle for all skill operations. |
| CSO |
Cyto Skill Ontology. CURIE-based taxonomy (e.g. cso:Python) used to classify skills. |
| Phase directory |
One of 15 named subdirectory paths the loader searches across the multi-repo layout. |
| Judge |
Quality scorer: 6 weighted axes (structure, trigger, content, cso, naming, freshness) → PASS/WARN/FAIL. |
| Sidecar |
.cyto-tags.yaml file written next to SKILL.md by the tagger, before promotion to frontmatter. |
| Memory file |
Agent-specific Markdown config (CLAUDE.md, GEMINI.md, etc.) managed by the agent module. |
| SkillIO |
Input or output slot on a skill. Must use namespace:Type schema references. |
Modules and Exports
| Module |
Key exports |
manifest.ts |
BaseSkill, SkillFrontmatterSchema, SkillIOSchema, parseSkillMd |
loader.ts |
discoverSkill, iterSkills, PHASE_DIRS, SkillLoadError |
classifier.ts |
classify, classifyAll, clusterByCso, csoLabel, CSO_LABELS |
ontology.ts |
OntologyRegistry, registry (singleton), CSOTerm, TagScore |
tagger.ts |
SkillTagger, CytoTags, AxisTag |
judge.ts |
judgeSkill, judgeAll, formatJudgeReport, JudgeReport, Verdict |
reviewer.ts |
reviewCollection, formatCollectionReview, CollectionReview |
synthesizer.ts |
synthesize, clusterByTaxonomy, ConsolidationReport |
doctor.ts |
DiagnosticResult, diagnoseSkill, validateJsonl, parseJsonl |
agent.ts |
AGENTS, installSkill, batchInstall, doctorAgent, memoryDiff, memoryHarmonize, createVaultLink |
claude-desktop-doctor.ts |
doctorClaudeDesktop, fixClaudeDesktopLauncher, fixStaleSpacePaths, purgeElectronCache |
BaseSkill API
| Method / Property |
Returns |
BaseSkill.load(skillDir) |
Promise<BaseSkill> |
.name |
string |
.description |
string |
.tags |
string[] (primary CSO CURIEs from structured tags, or flat list) |
.inputs / .outputs |
SkillIO[] |
.scripts() |
Promise<string[]> |
.references() |
Promise<string[]> |
Judge Axes
| Axis |
Weight |
Threshold |
trigger |
25% |
Quoted keywords, routing guidance |
content |
25% |
Decision Tree, References, guardrails |
structure |
20% |
name/description/author/license/version, body length |
cso |
10% |
Structured use_case/org_function/domain tags |
naming |
10% |
Kebab-case, ≤ 40 chars, slug = frontmatter name |
freshness |
10% |
version, status, last_revised within 6 months |
Verdicts: PASS ≥ 70 / WARN 50–69 / FAIL < 50
Agent IDs and Paths
| Agent |
ID |
Skills dir |
Memory file |
| Claude Code / Cowork |
claude |
~/.claude/skills |
~/.claude/CLAUDE.md |
| Antigravity (Gemini) |
antigravity |
~/.gemini/antigravity/skills |
~/.gemini/antigravity/GEMINI.md |
| Shared agents |
agents |
~/.agents/skills |
~/.agents/AGENTS.md |
| Cursor |
cursor |
~/.cursor/skills |
~/.cursor/CURSOR.md |
| Kiro (AWS) |
kiro |
~/.kiro/skills |
~/.kiro/KIRO.md |
Skill Groups (batchInstall)
| Group |
Skills |
cytognosis |
cytognosis-dev, cytognosis-doc, cytognosis-org, cytognosis-writer, cytognosis-orchestrator, cytognosis-branding, cytognosis-design-system-master, cytognosis-template-master |
coding |
python-pro, typescript-pro, react-expert, debugging, testing, technical-documentation, skill-creator, skill-judge |
science |
machine-learning, deep-learning, bioinformatics, visualization, literature, ontology-tools |
writing |
writing, communication, grants, scientific-documentation, meeting-summarizer |
meta |
skill-creator, skill-judge, thinking, orchestrator, personality |
Common Patterns
// Load all skills from a root
import { iterSkills } from "@cytognosis/cyto-skills";
const skills = await iterSkills(["/home/user/repos/my-skills"]);
// Classify a single skill
import { classify } from "@cytognosis/cyto-skills";
const tags = classify(skill); // string[] of CSO CURIEs
// Judge a skill
import { judgeSkill, formatJudgeReport } from "@cytognosis/cyto-skills";
const report = judgeSkill("/path/to/skill");
console.log(formatJudgeReport(report, true));
// Tag a skill (write sidecar)
import { SkillTagger } from "@cytognosis/cyto-skills";
const tagger = new SkillTagger({ confidenceThreshold: 0.5 });
tagger.tag("/path/to/skill/SKILL.md");
tagger.promote("/path/to/skill/SKILL.md", 0.7);
// Install cytognosis group to Claude
import { batchInstall } from "@cytognosis/cyto-skills";
await batchInstall("claude", "cytognosis", ["/path/to/skills"]);
// Check memory drift for Claude
import { memoryDiff } from "@cytognosis/cyto-skills";
const diff = await memoryDiff("claude");
console.log(diff.hasDrift, diff.deployedOnly);
Error Quick-Fix
| Error / Symptom |
Fix |
SkillLoadError: Failed to load N skill(s) |
One or more SKILL.md files have invalid frontmatter. Check the listed paths for missing required fields. |
IO slot 'x' has unqualified schema reference |
inputs/outputs schema field must use namespace:Type form, e.g. bio:Protein. |
iterSkills returns empty array |
Verify PHASE_DIRS paths exist under searchRoots. Try setting CYTO_SKILLS_ROOT. |
tagger.promote returns false |
No sidecar found (run tagger.tag first) or no tags met the 0.7 threshold. |
| Agent doctor reports broken symlinks |
Run fixDoctor(agent) to remove them, then reinstall. |
See Also