paput-mcp 2.8.0 → 2.8.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/README.md +20 -0
- package/dist/cli/export-skill.js +177 -0
- package/dist/cli/export-skill.js.map +1 -0
- package/dist/cli/index.js +14 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/setup-ai.js +5 -2
- package/dist/cli/setup-ai.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -130,6 +130,26 @@ Generated skills:
|
|
|
130
130
|
- `paput-save` - Review pending candidates first, then save only candidates explicitly approved by the user.
|
|
131
131
|
- `paput-dashboard-analysis` - Analyze PaPut dashboard context and optionally save the generated dashboard analysis.
|
|
132
132
|
|
|
133
|
+
For Claude Desktop, export skill ZIP files and upload them from
|
|
134
|
+
`Customize > Skills`:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
npx -y paput-mcp export-skill
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The command writes all PaPut skill ZIP files to `~/Downloads`. To export one
|
|
141
|
+
skill only:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
npx -y paput-mcp export-skill paput-dashboard-analysis
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
To choose another output directory:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
npx -y paput-mcp export-skill --output ~/Downloads/paput-skills
|
|
151
|
+
```
|
|
152
|
+
|
|
133
153
|
## Knowledge Workflow
|
|
134
154
|
|
|
135
155
|
Knowledge capture uses a two-step flow to avoid accidental memo creation.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { deflateRawSync } from 'node:zlib';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { dirname, extname, join, resolve } from 'node:path';
|
|
4
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
5
|
+
import { findSkill, renderSkill, SKILLS } from './setup-ai.js';
|
|
6
|
+
export function exportSkill(args) {
|
|
7
|
+
const options = parseOptions(args);
|
|
8
|
+
const skills = options.skillName
|
|
9
|
+
? [findSkill(options.skillName)]
|
|
10
|
+
: [...SKILLS];
|
|
11
|
+
if (skills.some((skill) => !skill)) {
|
|
12
|
+
throw new Error(`Unknown skill: ${options.skillName}`);
|
|
13
|
+
}
|
|
14
|
+
if (!options.skillName && extname(resolve(options.output)) === '.zip') {
|
|
15
|
+
throw new Error('--output must be a directory when exporting all skills. Omit the skill name and use --output ~/Downloads.');
|
|
16
|
+
}
|
|
17
|
+
const outputPaths = skills.map((skill) => {
|
|
18
|
+
if (!skill)
|
|
19
|
+
throw new Error('Unexpected missing skill');
|
|
20
|
+
const outputPath = resolveOutputPath(options.output, skill.name);
|
|
21
|
+
const skillMarkdown = renderSkill(skill);
|
|
22
|
+
const zip = createZip([
|
|
23
|
+
{
|
|
24
|
+
path: `${skill.name}/SKILL.md`,
|
|
25
|
+
data: Buffer.from(skillMarkdown, 'utf8'),
|
|
26
|
+
},
|
|
27
|
+
]);
|
|
28
|
+
mkdirSync(dirname(outputPath), { recursive: true });
|
|
29
|
+
writeFileSync(outputPath, zip);
|
|
30
|
+
return outputPath;
|
|
31
|
+
});
|
|
32
|
+
console.log(`Exported ${outputPaths.length} skill ZIP(s):`);
|
|
33
|
+
for (const outputPath of outputPaths) {
|
|
34
|
+
console.log(`- ${outputPath}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function parseOptions(args) {
|
|
38
|
+
let skillName;
|
|
39
|
+
let output = expandHome('~/Downloads');
|
|
40
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
41
|
+
const arg = args[index];
|
|
42
|
+
if (arg === '--output' || arg === '-o') {
|
|
43
|
+
const value = args[index + 1];
|
|
44
|
+
if (!value) {
|
|
45
|
+
throw new Error(`${arg} requires a file path`);
|
|
46
|
+
}
|
|
47
|
+
output = expandHome(value);
|
|
48
|
+
index += 1;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (!arg.startsWith('-') && !skillName) {
|
|
52
|
+
skillName = arg;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
throw new Error(`Unknown option for export-skill: ${arg}`);
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
skillName,
|
|
59
|
+
output,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function resolveOutputPath(output, skillName) {
|
|
63
|
+
const resolved = resolve(output);
|
|
64
|
+
const looksLikeZipFile = extname(resolved) === '.zip';
|
|
65
|
+
if (looksLikeZipFile) {
|
|
66
|
+
return resolved;
|
|
67
|
+
}
|
|
68
|
+
return join(resolved, `${skillName}.zip`);
|
|
69
|
+
}
|
|
70
|
+
function expandHome(path) {
|
|
71
|
+
if (path === '~')
|
|
72
|
+
return homedir();
|
|
73
|
+
if (path.startsWith('~/'))
|
|
74
|
+
return join(homedir(), path.slice(2));
|
|
75
|
+
return path;
|
|
76
|
+
}
|
|
77
|
+
export function createZip(entries) {
|
|
78
|
+
const localParts = [];
|
|
79
|
+
const centralParts = [];
|
|
80
|
+
let offset = 0;
|
|
81
|
+
for (const entry of entries) {
|
|
82
|
+
const filename = Buffer.from(entry.path, 'utf8');
|
|
83
|
+
const compressed = deflateRawSync(entry.data);
|
|
84
|
+
const crc = crc32(entry.data);
|
|
85
|
+
const localHeader = createLocalFileHeader({
|
|
86
|
+
filename,
|
|
87
|
+
crc,
|
|
88
|
+
compressedSize: compressed.length,
|
|
89
|
+
uncompressedSize: entry.data.length,
|
|
90
|
+
});
|
|
91
|
+
const centralHeader = createCentralDirectoryHeader({
|
|
92
|
+
filename,
|
|
93
|
+
crc,
|
|
94
|
+
compressedSize: compressed.length,
|
|
95
|
+
uncompressedSize: entry.data.length,
|
|
96
|
+
localHeaderOffset: offset,
|
|
97
|
+
});
|
|
98
|
+
localParts.push(localHeader, filename, compressed);
|
|
99
|
+
centralParts.push(centralHeader, filename);
|
|
100
|
+
offset += localHeader.length + filename.length + compressed.length;
|
|
101
|
+
}
|
|
102
|
+
const centralDirectory = Buffer.concat(centralParts);
|
|
103
|
+
const endOfCentralDirectory = createEndOfCentralDirectory({
|
|
104
|
+
entryCount: entries.length,
|
|
105
|
+
centralDirectorySize: centralDirectory.length,
|
|
106
|
+
centralDirectoryOffset: offset,
|
|
107
|
+
});
|
|
108
|
+
return Buffer.concat([
|
|
109
|
+
...localParts,
|
|
110
|
+
centralDirectory,
|
|
111
|
+
endOfCentralDirectory,
|
|
112
|
+
]);
|
|
113
|
+
}
|
|
114
|
+
function createLocalFileHeader(params) {
|
|
115
|
+
const header = Buffer.alloc(30);
|
|
116
|
+
header.writeUInt32LE(0x04034b50, 0);
|
|
117
|
+
header.writeUInt16LE(20, 4);
|
|
118
|
+
header.writeUInt16LE(0, 6);
|
|
119
|
+
header.writeUInt16LE(8, 8);
|
|
120
|
+
header.writeUInt16LE(0, 10);
|
|
121
|
+
header.writeUInt16LE(0, 12);
|
|
122
|
+
header.writeUInt32LE(params.crc, 14);
|
|
123
|
+
header.writeUInt32LE(params.compressedSize, 18);
|
|
124
|
+
header.writeUInt32LE(params.uncompressedSize, 22);
|
|
125
|
+
header.writeUInt16LE(params.filename.length, 26);
|
|
126
|
+
header.writeUInt16LE(0, 28);
|
|
127
|
+
return header;
|
|
128
|
+
}
|
|
129
|
+
function createCentralDirectoryHeader(params) {
|
|
130
|
+
const header = Buffer.alloc(46);
|
|
131
|
+
header.writeUInt32LE(0x02014b50, 0);
|
|
132
|
+
header.writeUInt16LE(20, 4);
|
|
133
|
+
header.writeUInt16LE(20, 6);
|
|
134
|
+
header.writeUInt16LE(0, 8);
|
|
135
|
+
header.writeUInt16LE(8, 10);
|
|
136
|
+
header.writeUInt16LE(0, 12);
|
|
137
|
+
header.writeUInt16LE(0, 14);
|
|
138
|
+
header.writeUInt32LE(params.crc, 16);
|
|
139
|
+
header.writeUInt32LE(params.compressedSize, 20);
|
|
140
|
+
header.writeUInt32LE(params.uncompressedSize, 24);
|
|
141
|
+
header.writeUInt16LE(params.filename.length, 28);
|
|
142
|
+
header.writeUInt16LE(0, 30);
|
|
143
|
+
header.writeUInt16LE(0, 32);
|
|
144
|
+
header.writeUInt16LE(0, 34);
|
|
145
|
+
header.writeUInt16LE(0, 36);
|
|
146
|
+
header.writeUInt32LE(0, 38);
|
|
147
|
+
header.writeUInt32LE(params.localHeaderOffset, 42);
|
|
148
|
+
return header;
|
|
149
|
+
}
|
|
150
|
+
function createEndOfCentralDirectory(params) {
|
|
151
|
+
const record = Buffer.alloc(22);
|
|
152
|
+
record.writeUInt32LE(0x06054b50, 0);
|
|
153
|
+
record.writeUInt16LE(0, 4);
|
|
154
|
+
record.writeUInt16LE(0, 6);
|
|
155
|
+
record.writeUInt16LE(params.entryCount, 8);
|
|
156
|
+
record.writeUInt16LE(params.entryCount, 10);
|
|
157
|
+
record.writeUInt32LE(params.centralDirectorySize, 12);
|
|
158
|
+
record.writeUInt32LE(params.centralDirectoryOffset, 16);
|
|
159
|
+
record.writeUInt16LE(0, 20);
|
|
160
|
+
return record;
|
|
161
|
+
}
|
|
162
|
+
function crc32(data) {
|
|
163
|
+
let crc = 0xffffffff;
|
|
164
|
+
for (const byte of data) {
|
|
165
|
+
crc = (crc >>> 8) ^ CRC_TABLE[(crc ^ byte) & 0xff];
|
|
166
|
+
}
|
|
167
|
+
return (crc ^ 0xffffffff) >>> 0;
|
|
168
|
+
}
|
|
169
|
+
const CRC_TABLE = new Uint32Array(256);
|
|
170
|
+
for (let index = 0; index < 256; index += 1) {
|
|
171
|
+
let value = index;
|
|
172
|
+
for (let bit = 0; bit < 8; bit += 1) {
|
|
173
|
+
value = value & 1 ? 0xedb88320 ^ (value >>> 1) : value >>> 1;
|
|
174
|
+
}
|
|
175
|
+
CRC_TABLE[index] = value >>> 0;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=export-skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-skill.js","sourceRoot":"","sources":["../../src/cli/export-skill.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { login } from './login.js';
|
|
2
2
|
import { logout } from './logout.js';
|
|
3
3
|
import { setupAi } from './setup-ai.js';
|
|
4
|
+
import { exportSkill } from './export-skill.js';
|
|
4
5
|
export async function runCli(args) {
|
|
5
6
|
const command = args[0];
|
|
6
7
|
if (!command)
|
|
@@ -29,6 +30,16 @@ export async function runCli(args) {
|
|
|
29
30
|
setupAi(args.slice(1));
|
|
30
31
|
return true;
|
|
31
32
|
}
|
|
33
|
+
if (command === 'export-skill') {
|
|
34
|
+
try {
|
|
35
|
+
exportSkill(args.slice(1));
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.error(error instanceof Error ? error.message : error);
|
|
39
|
+
process.exitCode = 1;
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
32
43
|
if (command === '--help' || command === '-h' || command === 'help') {
|
|
33
44
|
printHelp();
|
|
34
45
|
return true;
|
|
@@ -44,6 +55,8 @@ function printHelp() {
|
|
|
44
55
|
paput-mcp login Log in to PaPut with OAuth for local CLI mode
|
|
45
56
|
paput-mcp logout Revoke and remove the local OAuth token cache
|
|
46
57
|
paput-mcp setup-ai Set up PaPut integration for Claude/Codex
|
|
58
|
+
paput-mcp export-skill [name]
|
|
59
|
+
Export PaPut skill ZIP files for Claude Desktop
|
|
47
60
|
|
|
48
61
|
Options:
|
|
49
62
|
--api-url <URL> PaPut API URL for login. Defaults to PAPUT_API_URL or https://api.paput.io
|
|
@@ -54,6 +67,7 @@ Options:
|
|
|
54
67
|
--no-rules Do not update global rules
|
|
55
68
|
--claude-only Configure Claude only
|
|
56
69
|
--codex-only Configure Codex only
|
|
70
|
+
-o, --output <PATH> Output directory or ZIP path for export-skill. Defaults to ~/Downloads
|
|
57
71
|
`);
|
|
58
72
|
}
|
|
59
73
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACnE,SAAS,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;CAkBb,CAAC,CAAC;AACH,CAAC"}
|
package/dist/cli/setup-ai.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, lstatSync, mkdirSync, readFileSync, rmSync, symlinkSync, writeFileSync, } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
|
-
const SKILLS = [
|
|
4
|
+
export const SKILLS = [
|
|
5
5
|
{
|
|
6
6
|
name: 'paput-init',
|
|
7
7
|
description: 'Use this to initialize PaPut usage, sync existing memos, and inspect unprocessed sessions.',
|
|
@@ -324,7 +324,10 @@ function upsertRules(path, force, label) {
|
|
|
324
324
|
writeFileSync(path, next, 'utf8');
|
|
325
325
|
console.log(`Append ${label} rules: ${path}`);
|
|
326
326
|
}
|
|
327
|
-
function
|
|
327
|
+
export function findSkill(name) {
|
|
328
|
+
return SKILLS.find((skill) => skill.name === name);
|
|
329
|
+
}
|
|
330
|
+
export function renderSkill(skill) {
|
|
328
331
|
return `---
|
|
329
332
|
name: ${skill.name}
|
|
330
333
|
description: ${skill.description}
|
package/dist/cli/setup-ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-ai.js","sourceRoot":"","sources":["../../src/cli/setup-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,MAAM,EACN,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAe1C,MAAM,MAAM,GAAgB;
|
|
1
|
+
{"version":3,"file":"setup-ai.js","sourceRoot":"","sources":["../../src/cli/setup-ai.ts"],"names":[],"mappings":"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"}
|