Agent skill
skills-finlaysonstudio-jaypie
Skill/vocabulary storage with pluggable backends (pre-1.0)
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/skills-finlaysonstudio-jaypie
SKILL.md
@jaypie/tildeskill
Skill/vocabulary management with pluggable storage backends for AI assistants and documentation systems.
Overview
This package provides a storage abstraction for skill/vocabulary documents with markdown frontmatter support. It enables:
- Loading skills from markdown files with YAML frontmatter
- In-memory storage for testing
- Consistent alias normalization and validation
- Filtering by namespace and tags
- Searching across alias, name, description, content, and tags
- Include expansion for composable skills
Installation
npm install @jaypie/tildeskill
Core Types
interface SkillRecord {
alias: string; // Lookup key (normalized lowercase)
content: string; // Markdown body
description?: string; // Brief description from frontmatter
includes?: string[]; // Auto-expand these skill aliases on lookup
name?: string; // Display title for the skill
nicknames?: string[]; // Alternate lookup keys for getByNickname
related?: string[]; // Related skill aliases
tags?: string[]; // Categorization tags
}
interface ListFilter {
namespace?: string; // Namespace prefix matching (e.g., "kit:*")
tag?: string; // Filter by tag
}
interface SkillStore {
get(alias: string): Promise<SkillRecord | null>;
getByNickname(nickname: string): Promise<SkillRecord | null>;
list(filter?: ListFilter): Promise<SkillRecord[]>;
put(record: SkillRecord): Promise<SkillRecord>;
search(term: string): Promise<SkillRecord[]>;
}
Store Factories
Markdown Store (File-based)
import { createMarkdownStore } from "@jaypie/tildeskill";
const store = createMarkdownStore({ path: "./skills" });
// Get a specific skill
const skill = await store.get("aws");
if (skill) {
console.log(skill.content);
}
// List all skills
const skills = await store.list();
skills.forEach(s => console.log(`${s.alias}: ${s.description}`));
Memory Store (Testing)
import { createMemoryStore } from "@jaypie/tildeskill";
const store = createMemoryStore([
{ alias: "test", content: "# Test\n\nContent", description: "Test skill" }
]);
const skill = await store.get("test");
Include Expansion
import { expandIncludes, createMemoryStore } from "@jaypie/tildeskill";
const store = createMemoryStore([
{ alias: "base", content: "Base content" },
{ alias: "main", content: "Main content", includes: ["base"] },
]);
const record = await store.get("main");
const expanded = await expandIncludes(store, record);
// expanded = "Base content\n\nMain content"
Filtering and Search
// Filter by namespace prefix
const kitSkills = await store.list({ namespace: "kit:" });
// Filter by tag
const cloudSkills = await store.list({ tag: "cloud" });
// Search across alias, name, description, content, and tags
const results = await store.search("lambda");
// Lookup by nickname
const skill = await store.getByNickname("amazon");
Validation Utilities
import { isValidAlias, validateAlias, normalizeAlias } from "@jaypie/tildeskill";
// Check validity
isValidAlias("my-skill"); // true
isValidAlias("../../etc"); // false (path traversal)
// Normalize to lowercase
normalizeAlias("MY-Skill"); // "my-skill"
// Validate and normalize (throws on invalid)
validateAlias("valid"); // returns "valid"
validateAlias("../bad"); // throws BadRequestError
Skill File Format
Skill files use YAML frontmatter:
---
description: Brief description shown in listings
includes: base-skill, common-utils
name: Display Title
nicknames: alt-name, another-alias
related: alias1, alias2, alias3
tags: category1, category2
---
# Skill Title
Markdown content...
All frontmatter fields accept either comma-separated strings or YAML arrays.
Testing with Mocks
import { mockTildeskill, restoreTildeskill } from "@jaypie/testkit";
beforeEach(() => {
mockTildeskill();
});
afterEach(() => {
restoreTildeskill();
});
See Also
skill("fabric")- Service patterns that use tildeskillskill("mcp")- MCP server that uses tildeskill for skill storage
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?