@jaypie/mcp 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/suites/docs/index.js +1 -1
- package/package.json +1 -1
- package/release-notes/constructs/1.2.25.md +11 -0
- package/release-notes/mcp/0.7.1.md +10 -0
- package/release-notes/testkit/1.2.20.md +12 -0
- package/release-notes/tildeskill/0.2.0.md +28 -0
- package/skills/skills.md +1 -1
- package/skills/tildeskill.md +172 -0
|
@@ -9,7 +9,7 @@ import { gt } from 'semver';
|
|
|
9
9
|
/**
|
|
10
10
|
* Docs Suite - Documentation services (skill, version, release_notes)
|
|
11
11
|
*/
|
|
12
|
-
const BUILD_VERSION_STRING = "@jaypie/mcp@0.7.
|
|
12
|
+
const BUILD_VERSION_STRING = "@jaypie/mcp@0.7.1#82d19d8a"
|
|
13
13
|
;
|
|
14
14
|
const __filename$1 = fileURLToPath(import.meta.url);
|
|
15
15
|
const __dirname$1 = path.dirname(__filename$1);
|
package/package.json
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.25
|
|
3
|
+
date: 2025-01-28
|
|
4
|
+
summary: Add streaming support to JaypieNextJs construct
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Add `streaming` prop to `JaypieNextJs` construct for Lambda response streaming
|
|
10
|
+
- When `streaming: true`, enables faster Time To First Byte (TTFB) via Lambda response streaming
|
|
11
|
+
- Passes through to underlying `cdk-nextjs-standalone` Nextjs construct
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.20
|
|
3
|
+
date: 2025-01-28
|
|
4
|
+
summary: Updated tildeskill mocks for extended schema
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Updated `createMemoryStore` and `createMarkdownStore` mocks with new methods:
|
|
10
|
+
- `getByNickname`: Returns `null` by default
|
|
11
|
+
- `search`: Returns empty array by default
|
|
12
|
+
- Added `expandIncludes` mock that returns `record.content` by default
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 0.2.0
|
|
3
|
+
date: 2025-01-28
|
|
4
|
+
summary: Extended schema with nicknames, tags, includes and enhanced store interface
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## New Features
|
|
8
|
+
|
|
9
|
+
### Extended SkillRecord Schema
|
|
10
|
+
|
|
11
|
+
- `name`: Display title for the skill
|
|
12
|
+
- `nicknames`: Alternate lookup keys for `getByNickname()`
|
|
13
|
+
- `tags`: Categorization tags for filtering
|
|
14
|
+
- `includes`: Auto-expand other skill content on lookup
|
|
15
|
+
|
|
16
|
+
### Enhanced SkillStore Interface
|
|
17
|
+
|
|
18
|
+
- `getByNickname(nickname)`: Look up skills by alternate names
|
|
19
|
+
- `list(filter)`: Filter by namespace prefix or tag
|
|
20
|
+
- `search(term)`: Search across alias, name, description, content, and tags
|
|
21
|
+
|
|
22
|
+
### Include Expansion
|
|
23
|
+
|
|
24
|
+
New `expandIncludes(store, record)` utility that:
|
|
25
|
+
- Prepends included skills' content before the record's content
|
|
26
|
+
- Recursively expands nested includes
|
|
27
|
+
- Prevents circular references
|
|
28
|
+
- Skips missing includes silently
|
package/skills/skills.md
CHANGED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Skill/vocabulary storage with pluggable backends (pre-1.0)
|
|
3
|
+
related: fabric, mcp, tools
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# @jaypie/tildeskill
|
|
7
|
+
|
|
8
|
+
Skill/vocabulary management with pluggable storage backends for AI assistants and documentation systems.
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
This package provides a storage abstraction for skill/vocabulary documents with markdown frontmatter support. It enables:
|
|
13
|
+
- Loading skills from markdown files with YAML frontmatter
|
|
14
|
+
- In-memory storage for testing
|
|
15
|
+
- Consistent alias normalization and validation
|
|
16
|
+
- Filtering by namespace and tags
|
|
17
|
+
- Searching across alias, name, description, content, and tags
|
|
18
|
+
- Include expansion for composable skills
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install @jaypie/tildeskill
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Core Types
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
interface SkillRecord {
|
|
30
|
+
alias: string; // Lookup key (normalized lowercase)
|
|
31
|
+
content: string; // Markdown body
|
|
32
|
+
description?: string; // Brief description from frontmatter
|
|
33
|
+
includes?: string[]; // Auto-expand these skill aliases on lookup
|
|
34
|
+
name?: string; // Display title for the skill
|
|
35
|
+
nicknames?: string[]; // Alternate lookup keys for getByNickname
|
|
36
|
+
related?: string[]; // Related skill aliases
|
|
37
|
+
tags?: string[]; // Categorization tags
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
interface ListFilter {
|
|
41
|
+
namespace?: string; // Namespace prefix matching (e.g., "kit:*")
|
|
42
|
+
tag?: string; // Filter by tag
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
interface SkillStore {
|
|
46
|
+
get(alias: string): Promise<SkillRecord | null>;
|
|
47
|
+
getByNickname(nickname: string): Promise<SkillRecord | null>;
|
|
48
|
+
list(filter?: ListFilter): Promise<SkillRecord[]>;
|
|
49
|
+
put(record: SkillRecord): Promise<SkillRecord>;
|
|
50
|
+
search(term: string): Promise<SkillRecord[]>;
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Store Factories
|
|
55
|
+
|
|
56
|
+
### Markdown Store (File-based)
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
import { createMarkdownStore } from "@jaypie/tildeskill";
|
|
60
|
+
|
|
61
|
+
const store = createMarkdownStore({ path: "./skills" });
|
|
62
|
+
|
|
63
|
+
// Get a specific skill
|
|
64
|
+
const skill = await store.get("aws");
|
|
65
|
+
if (skill) {
|
|
66
|
+
console.log(skill.content);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// List all skills
|
|
70
|
+
const skills = await store.list();
|
|
71
|
+
skills.forEach(s => console.log(`${s.alias}: ${s.description}`));
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Memory Store (Testing)
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
import { createMemoryStore } from "@jaypie/tildeskill";
|
|
78
|
+
|
|
79
|
+
const store = createMemoryStore([
|
|
80
|
+
{ alias: "test", content: "# Test\n\nContent", description: "Test skill" }
|
|
81
|
+
]);
|
|
82
|
+
|
|
83
|
+
const skill = await store.get("test");
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Include Expansion
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
import { expandIncludes, createMemoryStore } from "@jaypie/tildeskill";
|
|
90
|
+
|
|
91
|
+
const store = createMemoryStore([
|
|
92
|
+
{ alias: "base", content: "Base content" },
|
|
93
|
+
{ alias: "main", content: "Main content", includes: ["base"] },
|
|
94
|
+
]);
|
|
95
|
+
|
|
96
|
+
const record = await store.get("main");
|
|
97
|
+
const expanded = await expandIncludes(store, record);
|
|
98
|
+
// expanded = "Base content\n\nMain content"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Filtering and Search
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
// Filter by namespace prefix
|
|
105
|
+
const kitSkills = await store.list({ namespace: "kit:" });
|
|
106
|
+
|
|
107
|
+
// Filter by tag
|
|
108
|
+
const cloudSkills = await store.list({ tag: "cloud" });
|
|
109
|
+
|
|
110
|
+
// Search across alias, name, description, content, and tags
|
|
111
|
+
const results = await store.search("lambda");
|
|
112
|
+
|
|
113
|
+
// Lookup by nickname
|
|
114
|
+
const skill = await store.getByNickname("amazon");
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Validation Utilities
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
import { isValidAlias, validateAlias, normalizeAlias } from "@jaypie/tildeskill";
|
|
121
|
+
|
|
122
|
+
// Check validity
|
|
123
|
+
isValidAlias("my-skill"); // true
|
|
124
|
+
isValidAlias("../../etc"); // false (path traversal)
|
|
125
|
+
|
|
126
|
+
// Normalize to lowercase
|
|
127
|
+
normalizeAlias("MY-Skill"); // "my-skill"
|
|
128
|
+
|
|
129
|
+
// Validate and normalize (throws on invalid)
|
|
130
|
+
validateAlias("valid"); // returns "valid"
|
|
131
|
+
validateAlias("../bad"); // throws BadRequestError
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Skill File Format
|
|
135
|
+
|
|
136
|
+
Skill files use YAML frontmatter:
|
|
137
|
+
|
|
138
|
+
```yaml
|
|
139
|
+
---
|
|
140
|
+
description: Brief description shown in listings
|
|
141
|
+
includes: base-skill, common-utils
|
|
142
|
+
name: Display Title
|
|
143
|
+
nicknames: alt-name, another-alias
|
|
144
|
+
related: alias1, alias2, alias3
|
|
145
|
+
tags: category1, category2
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
# Skill Title
|
|
149
|
+
|
|
150
|
+
Markdown content...
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
All frontmatter fields accept either comma-separated strings or YAML arrays.
|
|
154
|
+
|
|
155
|
+
## Testing with Mocks
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
import { mockTildeskill, restoreTildeskill } from "@jaypie/testkit";
|
|
159
|
+
|
|
160
|
+
beforeEach(() => {
|
|
161
|
+
mockTildeskill();
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
afterEach(() => {
|
|
165
|
+
restoreTildeskill();
|
|
166
|
+
});
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## See Also
|
|
170
|
+
|
|
171
|
+
- **`skill("fabric")`** - Service patterns that use tildeskill
|
|
172
|
+
- **`skill("mcp")`** - MCP server that uses tildeskill for skill storage
|