@martin0309205/prism 0.1.2 → 0.1.3

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.
@@ -3,6 +3,7 @@ import { existsSync, readdirSync } from 'node:fs';
3
3
  import { homedir } from 'node:os';
4
4
  import { join } from 'node:path';
5
5
  import { loadConfig, instanceRoot } from '../../config.js';
6
+ import { readSkillsConfig } from '../../skills.js';
6
7
  const EXPECTED_SKILLS = ['ask-mnemos-astry', 'astry-design-system', 'astry-pdf'];
7
8
  export function doctorCmd(program) {
8
9
  program
@@ -37,10 +38,16 @@ export function doctorCmd(program) {
37
38
  printWarn(`could not run 'claude --version': ${err.message}`);
38
39
  }
39
40
  }
41
+ const skillsCfg = readSkillsConfig();
42
+ if (skillsCfg) {
43
+ printOk(`skills repo configured: ${skillsCfg.repo_url}${skillsCfg.branch ? ` @ ${skillsCfg.branch}` : ''}`);
44
+ }
45
+ else {
46
+ printWarn(`skills repo not configured — run 'prism skills setup' then 'prism skills sync'`);
47
+ }
40
48
  const skillsDir = join(homedir(), '.claude', 'skills');
41
49
  if (!existsSync(skillsDir)) {
42
- printErr(`~/.claude/skills missing — claude not authenticated under this user?`);
43
- ok = false;
50
+ printWarn(`~/.claude/skills missing — run 'prism skills sync' to populate it`);
44
51
  }
45
52
  else {
46
53
  const installed = new Set(readdirSync(skillsDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name));
@@ -49,7 +56,7 @@ export function doctorCmd(program) {
49
56
  printOk(`skill: ${name}`);
50
57
  }
51
58
  else {
52
- printWarn(`skill missing: ${name} — install at ${join(skillsDir, name)}`);
59
+ printWarn(`skill missing: ${name} — run 'prism skills sync' (after setup)`);
53
60
  }
54
61
  }
55
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function skillsCmd(program: Command): void;
@@ -0,0 +1,125 @@
1
+ import prompts from 'prompts';
2
+ import { spawnSync } from 'node:child_process';
3
+ import { listInstalledSkills, readSkillsConfig, syncSkills, userSkillsDir, writeSkillsConfig, SKILLS_ENV_PATH, } from '../../skills.js';
4
+ import { listInstances } from '../../instances.js';
5
+ export function skillsCmd(program) {
6
+ const skills = program
7
+ .command('skills')
8
+ .description('Sync the Claude Code skills used by Prism from a private Git repo.');
9
+ skills
10
+ .command('setup')
11
+ .description('Configure the skills repo URL and a GitHub PAT for read access.')
12
+ .option('--repo <url>', 'repository URL (https://github.com/owner/repo.git or git@github.com:owner/repo.git)')
13
+ .option('--token <pat>', 'GitHub Personal Access Token with repo read access')
14
+ .option('--branch <name>', 'branch to track (default: repo default branch)')
15
+ .option('--non-interactive', 'fail instead of prompting if values are missing')
16
+ .action(async (opts) => {
17
+ const existing = readSkillsConfig();
18
+ let repo_url = opts.repo;
19
+ let token = opts.token;
20
+ let branch = opts.branch;
21
+ if (!opts.nonInteractive) {
22
+ const answers = await prompts([
23
+ {
24
+ type: repo_url ? null : 'text',
25
+ name: 'repo_url',
26
+ message: 'Skills repo URL',
27
+ initial: existing?.repo_url ?? 'https://github.com/martinbon39/astry-skills.git',
28
+ validate: (v) => /^(https?:\/\/|git@)/.test(v) ? true : 'must start with https:// or git@',
29
+ },
30
+ {
31
+ type: token ? null : 'password',
32
+ name: 'token',
33
+ message: 'GitHub PAT (read access to that repo)',
34
+ validate: (v) => v.length >= 20 ? true : 'token looks too short',
35
+ },
36
+ {
37
+ type: branch ? null : 'text',
38
+ name: 'branch',
39
+ message: 'Branch to track (leave blank for default)',
40
+ initial: existing?.branch ?? '',
41
+ },
42
+ ], { onCancel: () => { process.exit(130); } });
43
+ repo_url ??= answers.repo_url;
44
+ token ??= answers.token;
45
+ branch ??= answers.branch || undefined;
46
+ }
47
+ if (!repo_url || !token) {
48
+ console.error('error: --repo and --token are required (or run interactively)');
49
+ process.exit(2);
50
+ }
51
+ writeSkillsConfig({ repo_url, token, branch });
52
+ process.stderr.write(`✓ wrote ${SKILLS_ENV_PATH} (chmod 0600)\n`);
53
+ process.stderr.write(`\nNext: prism skills sync\n`);
54
+ });
55
+ skills
56
+ .command('sync')
57
+ .description('Pull the latest skills from the configured repo, overwrite ~/.claude/skills, and restart prism services.')
58
+ .option('--no-restart', 'do not restart prism systemd services after sync')
59
+ .action((opts) => {
60
+ const cfg = readSkillsConfig();
61
+ if (!cfg) {
62
+ console.error(`error: skills not configured. Run 'prism skills setup' first.`);
63
+ process.exit(1);
64
+ }
65
+ let report;
66
+ try {
67
+ report = syncSkills(cfg);
68
+ }
69
+ catch (err) {
70
+ console.error(`error: ${err.message}`);
71
+ process.exit(1);
72
+ }
73
+ process.stderr.write(`[skills] ${report.cloned_or_pulled} → ${report.cache_dir}\n`);
74
+ for (const s of report.skills) {
75
+ process.stderr.write(` ${s.action === 'created' ? '✓ created' : '✓ replaced'} ${s.name}\n`);
76
+ }
77
+ process.stderr.write(`\ntarget: ${report.target_dir}\n`);
78
+ if (opts.restart === false)
79
+ return;
80
+ if (process.platform !== 'linux') {
81
+ process.stderr.write(`[skills] (skipping service restart — not Linux)\n`);
82
+ return;
83
+ }
84
+ const instances = listInstances();
85
+ if (instances.length === 0)
86
+ return;
87
+ process.stderr.write(`\n[skills] restarting prism services...\n`);
88
+ for (const inst of instances) {
89
+ const unit = `prism@${inst}.service`;
90
+ const r = spawnSync('systemctl', ['--user', 'restart', unit], { stdio: 'inherit' });
91
+ if (r.status !== 0) {
92
+ process.stderr.write(`[skills] failed to restart ${unit} (continuing)\n`);
93
+ }
94
+ }
95
+ });
96
+ skills
97
+ .command('list')
98
+ .description('List skills currently installed under ~/.claude/skills/.')
99
+ .action(() => {
100
+ const target = userSkillsDir();
101
+ const list = listInstalledSkills();
102
+ if (list.length === 0) {
103
+ process.stderr.write(`no skills found in ${target}\n`);
104
+ return;
105
+ }
106
+ process.stderr.write(`installed skills (${target}):\n`);
107
+ for (const name of list)
108
+ process.stderr.write(` - ${name}\n`);
109
+ });
110
+ skills
111
+ .command('status')
112
+ .description('Print the current skills config (repo URL + branch, NOT the token).')
113
+ .action(() => {
114
+ const cfg = readSkillsConfig();
115
+ if (!cfg) {
116
+ process.stderr.write(`not configured (no ${SKILLS_ENV_PATH})\n`);
117
+ process.exit(1);
118
+ }
119
+ process.stderr.write(`config: ${SKILLS_ENV_PATH}\n`);
120
+ process.stderr.write(` repo: ${cfg.repo_url}\n`);
121
+ process.stderr.write(` branch: ${cfg.branch ?? '(default)'}\n`);
122
+ process.stderr.write(` token: ${cfg.token.slice(0, 4)}…${cfg.token.slice(-4)} (${cfg.token.length} chars)\n`);
123
+ });
124
+ }
125
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/commands/skills.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,41 @@
1
1
  import { spawnSync } from 'node:child_process';
2
2
  import { listInstances } from '../../instances.js';
3
+ import { readSkillsConfig } from '../../skills.js';
4
+ const NPM_PACKAGE = '@martin0309205/prism';
3
5
  export function updateCmd(program) {
4
6
  program
5
7
  .command('update')
6
- .description('Pull the latest prism version from npm and restart all installed services.')
8
+ .description('Pull the latest Prism from npm, sync skills from the configured repo, and restart services.')
9
+ .option('--no-skills', 'skip the skills sync step')
7
10
  .option('--no-restart', 'skip restarting systemd services')
8
11
  .option('--version <ver>', 'specific version to install', 'latest')
9
12
  .action((opts) => {
10
- const target = `prism@${opts.version}`;
13
+ const target = `${NPM_PACKAGE}@${opts.version}`;
11
14
  process.stderr.write(`[prism] installing ${target}...\n`);
12
15
  const install = spawnSync('npm', ['install', '-g', target], { stdio: 'inherit' });
13
16
  if (install.status !== 0) {
14
17
  process.stderr.write(`[prism] npm install failed\n`);
15
18
  process.exit(install.status ?? 1);
16
19
  }
17
- if (!opts.restart)
20
+ // After npm replaced our binary, re-exec the freshly installed `prism`
21
+ // so the latest skills.ts logic runs.
22
+ if (opts.skills !== false) {
23
+ if (readSkillsConfig()) {
24
+ process.stderr.write(`[prism] syncing skills...\n`);
25
+ const args = ['skills', 'sync'];
26
+ if (opts.restart === false)
27
+ args.push('--no-restart');
28
+ const r = spawnSync('prism', args, { stdio: 'inherit' });
29
+ if (r.status !== 0) {
30
+ process.stderr.write(`[prism] skills sync failed (continuing); run 'prism skills sync' manually\n`);
31
+ }
32
+ return; // skills sync already restarted services
33
+ }
34
+ else {
35
+ process.stderr.write(`[prism] skills not configured (run 'prism skills setup'), skipping skills sync\n`);
36
+ }
37
+ }
38
+ if (opts.restart === false)
18
39
  return;
19
40
  if (process.platform !== 'linux') {
20
41
  process.stderr.write(`[prism] skipping service restart (not Linux)\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4EAA4E,CAAC;SACzF,MAAM,CAAC,cAAc,EAAE,kCAAkC,CAAC;SAC1D,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,EAAE,QAAQ,CAAC;SAClE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;QACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,MAAM,OAAO,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAClF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,SAAS,IAAI,UAAU,CAAC;YACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,OAAO,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACpF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,IAAI,iBAAiB,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -9,6 +9,7 @@ import { doctorCmd } from './commands/doctor.js';
9
9
  import { serveCmd } from './commands/serve.js';
10
10
  import { updateCmd } from './commands/update.js';
11
11
  import { daemonCmd } from './commands/daemon.js';
12
+ import { skillsCmd } from './commands/skills.js';
12
13
  const here = dirname(fileURLToPath(import.meta.url));
13
14
  const pkg = JSON.parse(readFileSync(resolve(here, '..', '..', 'package.json'), 'utf8'));
14
15
  const program = new Command();
@@ -20,6 +21,7 @@ generateCmd(program);
20
21
  serveCmd(program);
21
22
  onboardCmd(program);
22
23
  doctorCmd(program);
24
+ skillsCmd(program);
23
25
  daemonCmd(program);
24
26
  updateCmd(program);
25
27
  program.parseAsync(process.argv).catch((err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;AAE/G,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,gGAAgG,CAAC;KAC7G,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,SAAS,CAAC,OAAO,CAAC,CAAC;AACnB,SAAS,CAAC,OAAO,CAAC,CAAC;AACnB,SAAS,CAAC,OAAO,CAAC,CAAC;AAEnB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;AAE/G,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,gGAAgG,CAAC;KAC7G,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,SAAS,CAAC,OAAO,CAAC,CAAC;AACnB,SAAS,CAAC,OAAO,CAAC,CAAC;AACnB,SAAS,CAAC,OAAO,CAAC,CAAC;AACnB,SAAS,CAAC,OAAO,CAAC,CAAC;AAEnB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ export declare const SKILLS_ENV_PATH: string;
2
+ export declare const SKILLS_CACHE_DIR: string;
3
+ export interface SkillsConfig {
4
+ repo_url: string;
5
+ token: string;
6
+ branch?: string;
7
+ }
8
+ export declare function userSkillsDir(): string;
9
+ export declare function readSkillsConfig(): SkillsConfig | null;
10
+ export declare function writeSkillsConfig(cfg: SkillsConfig): void;
11
+ export declare function authenticatedRepoUrl(cfg: SkillsConfig): string;
12
+ export interface SyncReport {
13
+ cloned_or_pulled: 'cloned' | 'pulled';
14
+ skills: {
15
+ name: string;
16
+ action: 'created' | 'replaced';
17
+ }[];
18
+ cache_dir: string;
19
+ target_dir: string;
20
+ }
21
+ export declare function syncSkills(cfg: SkillsConfig): SyncReport;
22
+ export declare function listInstalledSkills(): string[];
package/dist/skills.js ADDED
@@ -0,0 +1,146 @@
1
+ import { spawnSync } from 'node:child_process';
2
+ import { chmodSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync, } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ export const SKILLS_ENV_PATH = join(homedir(), '.prism', 'skills.env');
6
+ export const SKILLS_CACHE_DIR = join(homedir(), '.prism', 'skills-cache');
7
+ export function userSkillsDir() {
8
+ return join(homedir(), '.claude', 'skills');
9
+ }
10
+ export function readSkillsConfig() {
11
+ if (!existsSync(SKILLS_ENV_PATH))
12
+ return null;
13
+ const raw = readFileSync(SKILLS_ENV_PATH, 'utf8');
14
+ const out = {};
15
+ for (const line of raw.split(/\r?\n/)) {
16
+ const trimmed = line.trim();
17
+ if (!trimmed || trimmed.startsWith('#'))
18
+ continue;
19
+ const eq = trimmed.indexOf('=');
20
+ if (eq < 0)
21
+ continue;
22
+ let val = trimmed.slice(eq + 1).trim();
23
+ if ((val.startsWith('"') && val.endsWith('"')) || (val.startsWith("'") && val.endsWith("'"))) {
24
+ val = val.slice(1, -1);
25
+ }
26
+ out[trimmed.slice(0, eq).trim()] = val;
27
+ }
28
+ if (!out.PRISM_SKILLS_REPO || !out.PRISM_SKILLS_TOKEN)
29
+ return null;
30
+ return {
31
+ repo_url: out.PRISM_SKILLS_REPO,
32
+ token: out.PRISM_SKILLS_TOKEN,
33
+ branch: out.PRISM_SKILLS_BRANCH,
34
+ };
35
+ }
36
+ export function writeSkillsConfig(cfg) {
37
+ mkdirSync(join(homedir(), '.prism'), { recursive: true });
38
+ const lines = [
39
+ '# Prism skills sync — read by `prism skills sync`',
40
+ '# Do not commit or share this file — the token has read access to your skills repo.',
41
+ `PRISM_SKILLS_REPO=${cfg.repo_url}`,
42
+ `PRISM_SKILLS_TOKEN=${cfg.token}`,
43
+ ];
44
+ if (cfg.branch)
45
+ lines.push(`PRISM_SKILLS_BRANCH=${cfg.branch}`);
46
+ writeFileSync(SKILLS_ENV_PATH, lines.join('\n') + '\n');
47
+ try {
48
+ chmodSync(SKILLS_ENV_PATH, 0o600);
49
+ }
50
+ catch { /* windows */ }
51
+ }
52
+ export function authenticatedRepoUrl(cfg) {
53
+ // Insert the token into an https URL: https://<token>@github.com/...
54
+ const u = cfg.repo_url;
55
+ if (u.startsWith('git@'))
56
+ return u; // SSH unchanged (assume key already on disk)
57
+ const m = /^(https?:\/\/)([^/]+)(\/.*)$/.exec(u);
58
+ if (!m)
59
+ return u;
60
+ // x-access-token works for both classic and fine-grained PATs
61
+ return `${m[1]}x-access-token:${cfg.token}@${m[2]}${m[3]}`;
62
+ }
63
+ export function syncSkills(cfg) {
64
+ mkdirSync(SKILLS_CACHE_DIR, { recursive: true });
65
+ const url = authenticatedRepoUrl(cfg);
66
+ const isFresh = !existsSync(join(SKILLS_CACHE_DIR, '.git'));
67
+ const action = isFresh ? 'cloned' : 'pulled';
68
+ if (isFresh) {
69
+ // remove any leftover non-git contents before clone
70
+ if (existsSync(SKILLS_CACHE_DIR)) {
71
+ rmSync(SKILLS_CACHE_DIR, { recursive: true, force: true });
72
+ }
73
+ const args = ['clone', '--depth=1'];
74
+ if (cfg.branch)
75
+ args.push('--branch', cfg.branch);
76
+ args.push(url, SKILLS_CACHE_DIR);
77
+ runGit(args, { cwd: homedir() });
78
+ }
79
+ else {
80
+ // make sure the remote URL is current (token may have rotated)
81
+ runGit(['remote', 'set-url', 'origin', url], { cwd: SKILLS_CACHE_DIR });
82
+ runGit(['fetch', '--depth=1', 'origin'], { cwd: SKILLS_CACHE_DIR });
83
+ const branch = cfg.branch ?? defaultBranch(SKILLS_CACHE_DIR);
84
+ runGit(['reset', '--hard', `origin/${branch}`], { cwd: SKILLS_CACHE_DIR });
85
+ runGit(['clean', '-fd'], { cwd: SKILLS_CACHE_DIR });
86
+ }
87
+ // For each top-level dir in cache (excluding .git), wipe and replace target
88
+ const target = userSkillsDir();
89
+ mkdirSync(target, { recursive: true });
90
+ const cacheEntries = readdirSync(SKILLS_CACHE_DIR, { withFileTypes: true })
91
+ .filter((d) => d.isDirectory() && d.name !== '.git' && !d.name.startsWith('.'));
92
+ const skills = [];
93
+ for (const entry of cacheEntries) {
94
+ const src = join(SKILLS_CACHE_DIR, entry.name);
95
+ if (!existsSync(join(src, 'SKILL.md')))
96
+ continue; // not a skill
97
+ const dst = join(target, entry.name);
98
+ const existed = existsSync(dst);
99
+ if (existed)
100
+ rmSync(dst, { recursive: true, force: true });
101
+ copyDirSync(src, dst);
102
+ skills.push({ name: entry.name, action: existed ? 'replaced' : 'created' });
103
+ }
104
+ return { cloned_or_pulled: action, skills, cache_dir: SKILLS_CACHE_DIR, target_dir: target };
105
+ }
106
+ function runGit(args, opts) {
107
+ // Suppress credential prompts: GIT_TERMINAL_PROMPT=0
108
+ const env = { ...process.env, GIT_TERMINAL_PROMPT: '0' };
109
+ const r = spawnSync('git', args, { cwd: opts.cwd, env, encoding: 'utf8' });
110
+ if (r.status !== 0) {
111
+ const stderr = (r.stderr || '').replace(/x-access-token:[^@]+@/g, 'x-access-token:***@');
112
+ const stdout = (r.stdout || '').replace(/x-access-token:[^@]+@/g, 'x-access-token:***@');
113
+ throw new Error(`git ${args[0]} failed (${r.status}):\n${stderr}\n${stdout}`);
114
+ }
115
+ }
116
+ function defaultBranch(cwd) {
117
+ const r = spawnSync('git', ['symbolic-ref', '--short', 'refs/remotes/origin/HEAD'], { cwd, encoding: 'utf8' });
118
+ if (r.status === 0 && r.stdout) {
119
+ return r.stdout.trim().replace(/^origin\//, '');
120
+ }
121
+ return 'main';
122
+ }
123
+ function copyDirSync(src, dst) {
124
+ mkdirSync(dst, { recursive: true });
125
+ for (const entry of readdirSync(src, { withFileTypes: true })) {
126
+ const s = join(src, entry.name);
127
+ const d = join(dst, entry.name);
128
+ if (entry.isDirectory()) {
129
+ copyDirSync(s, d);
130
+ }
131
+ else if (entry.isFile()) {
132
+ const data = readFileSync(s);
133
+ writeFileSync(d, data);
134
+ }
135
+ }
136
+ }
137
+ export function listInstalledSkills() {
138
+ const dir = userSkillsDir();
139
+ if (!existsSync(dir))
140
+ return [];
141
+ return readdirSync(dir, { withFileTypes: true })
142
+ .filter((d) => d.isDirectory() && !d.name.startsWith('.'))
143
+ .map((d) => d.name)
144
+ .sort();
145
+ }
146
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAQ1E,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,GAAG,CAAC;YAAE,SAAS;QACrB,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC7F,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACnE,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,iBAAiB;QAC/B,KAAK,EAAE,GAAG,CAAC,kBAAkB;QAC7B,MAAM,EAAE,GAAG,CAAC,mBAAmB;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG;QACZ,mDAAmD;QACnD,qFAAqF;QACrF,qBAAqB,GAAG,CAAC,QAAQ,EAAE;QACnC,sBAAsB,GAAG,CAAC,KAAK,EAAE;KAClC,CAAC;IACF,IAAI,GAAG,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,aAAa,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC;QAAC,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAiB;IACpD,qEAAqE;IACrE,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;IACvB,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,6CAA6C;IACjF,MAAM,CAAC,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,8DAA8D;IAC9D,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7D,CAAC;AASD,MAAM,UAAU,UAAU,CAAC,GAAiB;IAC1C,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAmC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE7E,IAAI,OAAO,EAAE,CAAC;QACZ,oDAAoD;QACpD,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACpC,IAAI,GAAG,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,+DAA+D;QAC/D,MAAM,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC7D,MAAM,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,4EAA4E;IAC5E,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,WAAW,CAAC,gBAAgB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACxE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAClF,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAAE,SAAS,CAAC,cAAc;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,OAAO;YAAE,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC/F,CAAC;AAED,SAAS,MAAM,CAAC,IAAc,EAAE,IAAqB;IACnD,qDAAqD;IACrD,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC;IACzD,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,OAAO,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,0BAA0B,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/B,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,GAAW;IAC3C,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,EAAE,CAAC;AACZ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@martin0309205/prism",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Thin connector around Claude Code: Slack/HTTP/CLI surfaces that spawn `claude -p` and ship back the files Claude creates.",
5
5
  "type": "module",
6
6
  "bin": {