@spences10/pi-skills 0.0.19 → 0.0.21

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.
Files changed (67) hide show
  1. package/README.md +18 -32
  2. package/dist/commands/completions.d.ts +8 -0
  3. package/dist/commands/completions.js +68 -0
  4. package/dist/commands/completions.js.map +1 -0
  5. package/dist/commands/github-handlers.d.ts +4 -0
  6. package/dist/commands/github-handlers.js +127 -0
  7. package/dist/commands/github-handlers.js.map +1 -0
  8. package/dist/commands/handler.d.ts +2 -0
  9. package/dist/commands/handler.js +56 -0
  10. package/dist/commands/handler.js.map +1 -0
  11. package/dist/commands/home-handler.d.ts +2 -0
  12. package/dist/commands/home-handler.js +38 -0
  13. package/dist/commands/home-handler.js.map +1 -0
  14. package/dist/commands/profile-handlers.d.ts +2 -0
  15. package/dist/commands/profile-handlers.js +117 -0
  16. package/dist/commands/profile-handlers.js.map +1 -0
  17. package/dist/commands/skill-handlers.d.ts +8 -0
  18. package/dist/commands/skill-handlers.js +184 -0
  19. package/dist/commands/skill-handlers.js.map +1 -0
  20. package/dist/commands/types.d.ts +13 -0
  21. package/dist/commands/types.js +2 -0
  22. package/dist/commands/types.js.map +1 -0
  23. package/dist/commands.js +91 -227
  24. package/dist/commands.js.map +1 -1
  25. package/dist/gh-skill.d.ts +16 -0
  26. package/dist/gh-skill.js +52 -0
  27. package/dist/gh-skill.js.map +1 -1
  28. package/dist/importer.d.ts +4 -0
  29. package/dist/importer.js +21 -0
  30. package/dist/importer.js.map +1 -1
  31. package/dist/manager/discovery.d.ts +19 -0
  32. package/dist/manager/discovery.js +101 -0
  33. package/dist/manager/discovery.js.map +1 -0
  34. package/dist/manager/import-management.d.ts +11 -0
  35. package/dist/manager/import-management.js +28 -0
  36. package/dist/manager/import-management.js.map +1 -0
  37. package/dist/manager/profile.d.ts +29 -0
  38. package/dist/manager/profile.js +214 -0
  39. package/dist/manager/profile.js.map +1 -0
  40. package/dist/manager.d.ts +4 -7
  41. package/dist/manager.js +35 -36
  42. package/dist/manager.js.map +1 -1
  43. package/dist/resource-discovery.d.ts +1 -0
  44. package/dist/resource-discovery.js +7 -0
  45. package/dist/resource-discovery.js.map +1 -0
  46. package/dist/scanner.d.ts +2 -33
  47. package/dist/scanner.js +7 -108
  48. package/dist/scanner.js.map +1 -1
  49. package/dist/skill-utils.d.ts +0 -7
  50. package/dist/skill-utils.js +10 -89
  51. package/dist/skill-utils.js.map +1 -1
  52. package/dist/skills-ui/github.d.ts +1 -0
  53. package/dist/skills-ui/github.js +128 -2
  54. package/dist/skills-ui/github.js.map +1 -1
  55. package/dist/skills-ui/home.d.ts +5 -1
  56. package/dist/skills-ui/home.js +7 -7
  57. package/dist/skills-ui/home.js.map +1 -1
  58. package/dist/skills-ui/manage.js +33 -5
  59. package/dist/skills-ui/manage.js.map +1 -1
  60. package/dist/skills-ui/profiles.js +1 -1
  61. package/dist/skills-ui/profiles.js.map +1 -1
  62. package/dist/skills-ui/skill-list.js +2 -5
  63. package/dist/skills-ui/skill-list.js.map +1 -1
  64. package/dist/skills-ui.d.ts +1 -2
  65. package/dist/skills-ui.js +1 -2
  66. package/dist/skills-ui.js.map +1 -1
  67. package/package.json +6 -4
package/README.md CHANGED
@@ -4,8 +4,8 @@
4
4
  [![built with Vite+](https://img.shields.io/badge/built%20with-Vite+-646CFF?logo=vite&logoColor=white)](https://viteplus.dev)
5
5
  [![tested with Vitest](https://img.shields.io/badge/tested%20with-Vitest-6E9F18?logo=vitest&logoColor=white)](https://vitest.dev)
6
6
 
7
- Pi extension for managing and importing Agent Skills from Pi, Claude,
8
- and plugin sources.
7
+ Pi extension for managing, discovering, and installing Agent Skills
8
+ for Pi.
9
9
 
10
10
  Maintained in the `my-pi` Vite+ workspace and tested with Vitest.
11
11
 
@@ -27,33 +27,21 @@ pi -e ./packages/pi-skills
27
27
  ## What it does
28
28
 
29
29
  Pi already has native skill discovery. This package adds a management
30
- layer for mixed skill ecosystems:
30
+ layer for Pi skill ecosystems:
31
31
 
32
32
  - discovers Pi-native skills in `$PI_CODING_AGENT_DIR/skills`
33
33
  (default: `~/.pi/agent/skills`)
34
- - discovers user-local Claude skills in `~/.claude/skills`
35
34
  - discovers project skills in `.agents/*/SKILL.md`,
36
35
  `.agents/skills/*/SKILL.md`, and `.pi/skills/*/SKILL.md`
37
- - discovers skills bundled inside installed Claude plugins
38
- - imports plugin skills into Pi-native skill storage
36
+ - searches public GitHub `SKILL.md` files through `gh skill search`
37
+ - previews GitHub-hosted skills through `gh skill preview`
39
38
  - installs GitHub-hosted skills through `gh skill` when GitHub CLI
40
39
  support is available
41
- - syncs imported skills when upstream plugin content changes
42
40
  - checks or applies GitHub skill updates through `gh skill update`
43
41
  - provides a `/skills` command and interactive picker
44
42
 
45
- Imported skills are copied into:
46
-
47
- ```text
48
- $PI_CODING_AGENT_DIR/skills/<skill-name>
49
- ```
50
-
51
- The `~/.claude` locations are intentional upstream discovery sources,
52
- not Pi-managed state. Use `--no-skills` or `--untrusted` when sandbox
53
- runs must not read user-local Claude skills/plugins.
54
-
55
- Import metadata is stored beside each imported skill so sync can
56
- detect local edits and upstream changes.
43
+ External source import/sync behavior lives in
44
+ `@spences10/pi-skill-importer`.
57
45
 
58
46
  ## Commands
59
47
 
@@ -61,10 +49,8 @@ detect local edits and upstream changes.
61
49
  /skills
62
50
  /skills enable <key|name|pattern>
63
51
  /skills disable <key|name|pattern>
52
+ /skills search <query>
64
53
  /skills add <owner/repo> <skill[@ref]> [--pin ref|--scope project|--dir path|--force]
65
- /skills import <key-or-name>
66
- /skills import <owner/repo> <skill[@ref]> [--pin ref|--scope project|--dir path|--force]
67
- /skills sync <key-or-name>
68
54
  /skills update --dry-run
69
55
  /skills update --all
70
56
  /skills profile create <name>
@@ -74,18 +60,18 @@ detect local edits and upstream changes.
74
60
  /skills defaults all-disabled
75
61
  ```
76
62
 
77
- GitHub imports and updates require GitHub CLI `gh` v2.90.0 or newer
78
- with preview `gh skill` support. The extension delegates GitHub source
79
- tracking, pinning, preview/update metadata, and tree-SHA comparison to
80
- `gh skill` instead of maintaining a parallel cache.
63
+ GitHub search, installs, and updates require GitHub CLI `gh` v2.90.0
64
+ or newer with preview `gh skill` support. The extension delegates
65
+ GitHub source tracking, pinning, preview/update metadata, and tree-SHA
66
+ comparison to `gh skill` instead of maintaining a parallel cache.
81
67
 
82
68
  With a UI available, `/skills` opens a modal home menu for managing,
83
- adding GitHub skills, batch-importing plugin skills, updating GitHub
84
- skills, refreshing discovery, profile switching, and profile baseline
85
- selection. The Add GitHub skill flow can install one skill or every
86
- `SKILL.md` found in a repository. The no-arg `add`, `import`, `sync`,
87
- and `defaults` subcommands use modal pickers/forms in interactive
88
- mode. In headless mode, use the subcommands directly.
69
+ adding GitHub skills, updating GitHub skills, refreshing discovery,
70
+ profile switching, and profile baseline selection. The Add GitHub
71
+ skill flow can install one skill or every `SKILL.md` found in a
72
+ repository. The no-arg `search`, `add`, and `defaults` subcommands use
73
+ modal pickers/forms in interactive mode. In headless mode, use the
74
+ subcommands directly.
89
75
 
90
76
  ## Skill enablement
91
77
 
@@ -0,0 +1,8 @@
1
+ import type { create_skills_manager } from '../manager.js';
2
+ type SkillsManager = ReturnType<typeof create_skills_manager>;
3
+ export declare const SKILL_SUBCOMMANDS: string[];
4
+ export declare function get_skill_argument_completions(prefix: string, mgr: SkillsManager): {
5
+ value: string;
6
+ label: string;
7
+ }[] | null;
8
+ export {};
@@ -0,0 +1,68 @@
1
+ import { sort_skills } from '../skill-utils.js';
2
+ export const SKILL_SUBCOMMANDS = [
3
+ 'list',
4
+ 'show',
5
+ 'enable',
6
+ 'disable',
7
+ 'delete',
8
+ 'search',
9
+ 'add',
10
+ 'update',
11
+ 'profile',
12
+ 'refresh',
13
+ 'defaults',
14
+ ];
15
+ export function get_skill_argument_completions(prefix, mgr) {
16
+ const parts = prefix.trimStart().split(/\s+/);
17
+ const has_trailing_space = /\s$/.test(prefix);
18
+ if (parts.length <= 1 && !has_trailing_space) {
19
+ return SKILL_SUBCOMMANDS.filter((s) => s.startsWith(parts[0] || '')).map((s) => ({ value: s, label: s }));
20
+ }
21
+ if (['show', 'enable', 'disable', 'delete'].includes(parts[0] ?? '')) {
22
+ const q = parts.slice(1).join(' ').toLowerCase();
23
+ return sort_skills(mgr.discover())
24
+ .filter((s) => s.key.toLowerCase().includes(q) ||
25
+ s.name.toLowerCase().includes(q))
26
+ .slice(0, 20)
27
+ .map((s) => ({
28
+ value: `${parts[0]} ${s.key}`,
29
+ label: s.key,
30
+ }));
31
+ }
32
+ if (parts[0] === 'update') {
33
+ return ['--dry-run', '--all', '--force', '--unpin']
34
+ .filter((flag) => flag.startsWith(parts.at(-1) ?? ''))
35
+ .map((flag) => ({
36
+ value: `${parts.slice(0, -1).join(' ')} ${flag}`.trim(),
37
+ label: flag,
38
+ }));
39
+ }
40
+ if (parts[0] === 'profile') {
41
+ const profile_subs = [
42
+ 'list',
43
+ 'show',
44
+ 'use',
45
+ 'create',
46
+ 'include',
47
+ 'exclude',
48
+ ];
49
+ if (parts.length <= 2 && !has_trailing_space) {
50
+ return profile_subs
51
+ .filter((s) => s.startsWith(parts[1] || ''))
52
+ .map((s) => ({ value: `profile ${s}`, label: s }));
53
+ }
54
+ if (['show', 'use', 'include', 'exclude'].includes(parts[1] ?? '')) {
55
+ const q = parts.slice(2).join(' ').toLowerCase();
56
+ return mgr
57
+ .list_profiles()
58
+ .filter((profile) => profile.name.toLowerCase().includes(q))
59
+ .slice(0, 20)
60
+ .map((profile) => ({
61
+ value: `profile ${parts[1]} ${profile.name}`,
62
+ label: profile.name,
63
+ }));
64
+ }
65
+ }
66
+ return null;
67
+ }
68
+ //# sourceMappingURL=completions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/commands/completions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { SkillsCommandRequest } from './types.js';
2
+ export declare function handle_add_command({ rest, arg, ctx, }: SkillsCommandRequest): Promise<boolean>;
3
+ export declare function handle_github_import(request: SkillsCommandRequest): Promise<boolean>;
4
+ export declare function handle_update_command({ rest, ctx, }: SkillsCommandRequest): Promise<boolean>;
@@ -0,0 +1,127 @@
1
+ import { run_with_progress_modal, show_text_modal, } from '@spences10/pi-tui-modal';
2
+ import { has_gh_skill, parse_gh_skill_install_args, run_gh_skill_install, run_gh_skill_install_async, run_gh_skill_update, run_gh_skill_update_async, } from '../gh-skill.js';
3
+ import { show_add_github_skill_modal } from '../skills-ui.js';
4
+ function notify_error(ctx, error) {
5
+ ctx.ui.notify(error instanceof Error ? error.message : String(error), 'warning');
6
+ }
7
+ export async function handle_add_command({ rest, arg, ctx, }) {
8
+ if (!arg && ctx.hasUI) {
9
+ if (await show_add_github_skill_modal(ctx))
10
+ return true;
11
+ return false;
12
+ }
13
+ const gh_request = parse_gh_skill_install_args(rest);
14
+ if (!gh_request) {
15
+ ctx.ui.notify('Usage: /skills add <owner/repo> <skill[@ref]> [--pin ref|--scope project|--dir path|--force]', 'warning');
16
+ return false;
17
+ }
18
+ if (!has_gh_skill()) {
19
+ ctx.ui.notify('GitHub skill adds require gh v2.90.0+ with `gh skill` support.', 'warning');
20
+ return false;
21
+ }
22
+ try {
23
+ const output = ctx.hasUI
24
+ ? await run_with_progress_modal(ctx, {
25
+ title: 'Adding GitHub skill',
26
+ message: `Installing ${gh_request.skill} from ${gh_request.repository}`,
27
+ }, async ({ signal, update }) => {
28
+ update({ current: gh_request.skill });
29
+ return await run_gh_skill_install_async(gh_request, undefined, {
30
+ signal,
31
+ });
32
+ })
33
+ : run_gh_skill_install(gh_request);
34
+ if (output === undefined)
35
+ return true;
36
+ ctx.ui.notify(`${output || `Added ${gh_request.skill} from ${gh_request.repository}`}\nReloading...`, 'info');
37
+ await ctx.reload();
38
+ return true;
39
+ }
40
+ catch (error) {
41
+ notify_error(ctx, error);
42
+ return true;
43
+ }
44
+ }
45
+ export async function handle_github_import(request) {
46
+ const { rest, ctx } = request;
47
+ const gh_request = parse_gh_skill_install_args(rest);
48
+ if (!gh_request)
49
+ return false;
50
+ if (!has_gh_skill()) {
51
+ ctx.ui.notify('GitHub skill imports require gh v2.90.0+ with `gh skill` support.', 'warning');
52
+ return true;
53
+ }
54
+ try {
55
+ const output = ctx.hasUI
56
+ ? await run_with_progress_modal(ctx, {
57
+ title: 'Importing GitHub skill',
58
+ message: `Installing ${gh_request.skill} from ${gh_request.repository}`,
59
+ }, async ({ signal, update }) => {
60
+ update({ current: gh_request.skill });
61
+ return await run_gh_skill_install_async(gh_request, undefined, {
62
+ signal,
63
+ });
64
+ })
65
+ : run_gh_skill_install(gh_request);
66
+ if (output === undefined)
67
+ return true;
68
+ if (ctx.hasUI) {
69
+ await show_text_modal(ctx, {
70
+ title: 'GitHub skill imported',
71
+ text: `${output || `Imported ${gh_request.skill} from ${gh_request.repository}`}\n\nReloading...`,
72
+ });
73
+ }
74
+ else {
75
+ ctx.ui.notify(`${output || `Imported ${gh_request.skill} from ${gh_request.repository}`}\nReloading...`, 'info');
76
+ }
77
+ await ctx.reload();
78
+ return true;
79
+ }
80
+ catch (error) {
81
+ notify_error(ctx, error);
82
+ return true;
83
+ }
84
+ }
85
+ export async function handle_update_command({ rest, ctx, }) {
86
+ if (!has_gh_skill()) {
87
+ ctx.ui.notify('GitHub skill updates require gh v2.90.0+ with `gh skill` support.', 'warning');
88
+ return false;
89
+ }
90
+ try {
91
+ const dry_run = rest.includes('--dry-run');
92
+ const output = ctx.hasUI
93
+ ? await run_with_progress_modal(ctx, {
94
+ title: dry_run
95
+ ? 'Checking GitHub skill updates'
96
+ : 'Updating GitHub skills',
97
+ message: `Running gh skill update ${rest.join(' ')}`.trim(),
98
+ }, async ({ signal }) => await run_gh_skill_update_async(rest, undefined, {
99
+ signal,
100
+ }))
101
+ : run_gh_skill_update(rest);
102
+ if (output === undefined)
103
+ return true;
104
+ if (ctx.hasUI) {
105
+ await show_text_modal(ctx, {
106
+ title: dry_run
107
+ ? 'GitHub skill update check'
108
+ : 'GitHub skills updated',
109
+ text: output || 'No output from gh skill update.',
110
+ });
111
+ }
112
+ else {
113
+ ctx.ui.notify(output || 'gh skill update completed.');
114
+ }
115
+ if (!dry_run) {
116
+ ctx.ui.notify('Reloading skills...', 'info');
117
+ await ctx.reload();
118
+ return true;
119
+ }
120
+ return true;
121
+ }
122
+ catch (error) {
123
+ notify_error(ctx, error);
124
+ return true;
125
+ }
126
+ }
127
+ //# sourceMappingURL=github-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-handlers.js","sourceRoot":"","sources":["../../src/commands/github-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { SkillsCommandUiContext, SkillsManager } from './types.js';
2
+ export declare function handle_skills_command(args: string, ctx: SkillsCommandUiContext, mgr: SkillsManager): Promise<void>;
@@ -0,0 +1,56 @@
1
+ import { SKILL_SUBCOMMANDS } from './completions.js';
2
+ import { handle_add_command, handle_update_command, } from './github-handlers.js';
3
+ import { handle_skills_home } from './home-handler.js';
4
+ import { handle_profile_command } from './profile-handlers.js';
5
+ import { handle_defaults_command, handle_import_command, handle_list_command, handle_refresh_command, handle_show_command, handle_sync_command, handle_toggle_command, } from './skill-handlers.js';
6
+ export async function handle_skills_command(args, ctx, mgr) {
7
+ const trimmed = args.trim();
8
+ if (!trimmed && (await handle_skills_home(ctx, mgr)))
9
+ return;
10
+ const [sub, ...rest] = (trimmed || 'list').split(/\s+/);
11
+ const request = {
12
+ args,
13
+ trimmed,
14
+ sub,
15
+ rest,
16
+ arg: rest.join(' '),
17
+ mgr,
18
+ ctx,
19
+ };
20
+ switch (sub) {
21
+ case 'list':
22
+ await handle_list_command(request);
23
+ break;
24
+ case 'show':
25
+ await handle_show_command(request);
26
+ break;
27
+ case 'enable':
28
+ case 'disable':
29
+ await handle_toggle_command(request);
30
+ break;
31
+ case 'add':
32
+ await handle_add_command(request);
33
+ break;
34
+ case 'import':
35
+ await handle_import_command(request);
36
+ break;
37
+ case 'sync':
38
+ await handle_sync_command(request);
39
+ break;
40
+ case 'update':
41
+ await handle_update_command(request);
42
+ break;
43
+ case 'profile':
44
+ await handle_profile_command(request);
45
+ break;
46
+ case 'refresh':
47
+ await handle_refresh_command(request);
48
+ break;
49
+ case 'defaults':
50
+ await handle_defaults_command(request);
51
+ break;
52
+ default:
53
+ ctx.ui.notify(`Unknown: ${sub}. Use: ${SKILL_SUBCOMMANDS.join(', ')}`, 'warning');
54
+ }
55
+ }
56
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/commands/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACN,kBAAkB,EAClB,qBAAqB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACrB,MAAM,qBAAqB,CAAC;AAM7B,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,IAAY,EACZ,GAA2B,EAC3B,GAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE5B,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAAE,OAAO;IAE7D,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG;QACf,IAAI;QACJ,OAAO;QACP,GAAG;QACH,IAAI;QACJ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,GAAG;QACH,GAAG;KACH,CAAC;IAEF,QAAQ,GAAG,EAAE,CAAC;QACb,KAAK,MAAM;YACV,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM;QACP,KAAK,MAAM;YACV,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM;QACP,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACb,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACP,KAAK,KAAK;YACT,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM;QACP,KAAK,QAAQ;YACZ,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACP,KAAK,MAAM;YACV,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM;QACP,KAAK,QAAQ;YACZ,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACP,KAAK,SAAS;YACb,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM;QACP,KAAK,SAAS;YACb,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM;QACP,KAAK,UAAU;YACd,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM;QACP;YACC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,YAAY,GAAG,UAAU,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACvD,SAAS,CACT,CAAC;IACJ,CAAC;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { SkillsCommandUiContext, SkillsManager } from './types.js';
2
+ export declare function handle_skills_home(ctx: SkillsCommandUiContext, mgr: SkillsManager): Promise<boolean>;
@@ -0,0 +1,38 @@
1
+ import { show_add_github_skill_modal, show_importable_skills_modal, show_profiles_modal, show_refresh_summary, show_skills_home_modal, show_skills_manager_modal, show_update_github_skills_modal, } from '../skills-ui.js';
2
+ export async function handle_skills_home(ctx, mgr) {
3
+ if (!ctx.hasUI)
4
+ return false;
5
+ let selected;
6
+ while (true) {
7
+ const managed_count = mgr.discover().length;
8
+ const importable_count = mgr.discover_importable().length;
9
+ selected = await show_skills_home_modal(ctx, managed_count, importable_count, mgr.get_active_profile());
10
+ if (!selected)
11
+ break;
12
+ if (selected === 'manage') {
13
+ if (await show_skills_manager_modal(ctx, mgr))
14
+ return true;
15
+ }
16
+ else if (selected === 'importable') {
17
+ if (await show_importable_skills_modal(ctx, mgr))
18
+ return true;
19
+ }
20
+ else if (selected === 'add') {
21
+ if (await show_add_github_skill_modal(ctx))
22
+ return true;
23
+ }
24
+ else if (selected === 'update') {
25
+ if (await show_update_github_skills_modal(ctx))
26
+ return true;
27
+ }
28
+ else if (selected === 'profiles') {
29
+ if (await show_profiles_modal(ctx, mgr))
30
+ return true;
31
+ }
32
+ else if (selected === 'refresh') {
33
+ await show_refresh_summary(ctx, mgr);
34
+ }
35
+ }
36
+ return true;
37
+ }
38
+ //# sourceMappingURL=home-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-handler.js","sourceRoot":"","sources":["../../src/commands/home-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,2BAA2B,EAC3B,4BAA4B,EAC5B,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,+BAA+B,GAC/B,MAAM,iBAAiB,CAAC;AAMzB,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,GAA2B,EAC3B,GAAkB;IAElB,IAAI,CAAC,GAAG,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAE7B,IAAI,QAA4B,CAAC;IACjC,OAAO,IAAI,EAAE,CAAC;QACb,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;QAC5C,MAAM,gBAAgB,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC;QAC1D,QAAQ,GAAG,MAAM,sBAAsB,CACtC,GAAG,EACH,aAAa,EACb,gBAAgB,EAChB,GAAG,CAAC,kBAAkB,EAAE,CACxB,CAAC;QACF,IAAI,CAAC,QAAQ;YAAE,MAAM;QAErB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,MAAM,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC5D,CAAC;aAAM,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YACtC,IAAI,MAAM,4BAA4B,CAAC,GAAG,EAAE,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC/D,CAAC;aAAM,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC/B,IAAI,MAAM,2BAA2B,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QACzD,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,MAAM,+BAA+B,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC7D,CAAC;aAAM,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YACpC,IAAI,MAAM,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QACtD,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { SkillsCommandRequest } from './types.js';
2
+ export declare function handle_profile_command(request: SkillsCommandRequest): Promise<boolean>;
@@ -0,0 +1,117 @@
1
+ import { show_input_modal, show_text_modal, } from '@spences10/pi-tui-modal';
2
+ import { format_profile_detail, profile_description, } from '../skill-utils.js';
3
+ import { pick_profile, show_profiles_modal } from '../skills-ui.js';
4
+ function notify_error(ctx, error) {
5
+ ctx.ui.notify(error instanceof Error ? error.message : String(error), 'warning');
6
+ }
7
+ export async function handle_profile_command(request) {
8
+ const { args, rest, mgr, ctx } = request;
9
+ const [action = 'list', name, ...pattern_parts] = rest;
10
+ const pattern = pattern_parts.join(' ');
11
+ if (!args.trim().startsWith('profile') && ctx.hasUI) {
12
+ if (await show_profiles_modal(ctx, mgr))
13
+ return true;
14
+ return false;
15
+ }
16
+ if (action === 'list') {
17
+ const text = mgr
18
+ .list_profiles()
19
+ .map((profile) => `${profile.active ? 'active' : ' '} ${profile.name} — ${profile_description(profile)}`)
20
+ .join('\n');
21
+ if (ctx.hasUI) {
22
+ await show_text_modal(ctx, {
23
+ title: 'Skill profiles',
24
+ text: text || 'No skill profiles found',
25
+ });
26
+ }
27
+ else {
28
+ ctx.ui.notify(text || 'No skill profiles found');
29
+ }
30
+ return false;
31
+ }
32
+ if (action === 'show') {
33
+ let target = name;
34
+ if (!target && ctx.hasUI)
35
+ target = await pick_profile(ctx, mgr, 'Show skill profile');
36
+ const profile = mgr
37
+ .list_profiles()
38
+ .find((candidate) => candidate.name === target);
39
+ if (!profile) {
40
+ ctx.ui.notify('Usage: /skills profile show <name>', 'warning');
41
+ return false;
42
+ }
43
+ if (ctx.hasUI) {
44
+ await show_text_modal(ctx, {
45
+ title: profile.name,
46
+ text: format_profile_detail(profile),
47
+ });
48
+ }
49
+ else {
50
+ ctx.ui.notify(format_profile_detail(profile));
51
+ }
52
+ return false;
53
+ }
54
+ if (action === 'use') {
55
+ let target = name;
56
+ if (!target && ctx.hasUI)
57
+ target = await pick_profile(ctx, mgr, 'Use skill profile');
58
+ if (!target) {
59
+ ctx.ui.notify('Usage: /skills profile use <name>', 'warning');
60
+ return false;
61
+ }
62
+ try {
63
+ mgr.use_profile(target);
64
+ ctx.ui.notify(`Using skill profile ${target}. Reloading...`, 'info');
65
+ await ctx.reload();
66
+ return true;
67
+ }
68
+ catch (error) {
69
+ notify_error(ctx, error);
70
+ }
71
+ return false;
72
+ }
73
+ if (action === 'create') {
74
+ let target = name;
75
+ if (!target && ctx.hasUI) {
76
+ target = await show_input_modal(ctx, {
77
+ title: 'Create skill profile',
78
+ label: 'Profile name',
79
+ trim: true,
80
+ });
81
+ }
82
+ if (!target) {
83
+ ctx.ui.notify('Usage: /skills profile create <name>', 'warning');
84
+ return false;
85
+ }
86
+ try {
87
+ mgr.create_profile(target);
88
+ ctx.ui.notify(`Created empty skill profile ${target}`);
89
+ }
90
+ catch (error) {
91
+ notify_error(ctx, error);
92
+ }
93
+ return false;
94
+ }
95
+ if (action === 'include' || action === 'exclude') {
96
+ if (!name || !pattern) {
97
+ ctx.ui.notify(`Usage: /skills profile ${action} <name> <pattern>`, 'warning');
98
+ return false;
99
+ }
100
+ try {
101
+ if (action === 'include')
102
+ mgr.include_in_profile(name, pattern);
103
+ else
104
+ mgr.exclude_from_profile(name, pattern);
105
+ ctx.ui.notify(`Updated skill profile ${name}. Reloading...`, 'info');
106
+ await ctx.reload();
107
+ return true;
108
+ }
109
+ catch (error) {
110
+ notify_error(ctx, error);
111
+ }
112
+ return false;
113
+ }
114
+ ctx.ui.notify('Usage: /skills profile <list|show|use|create|include|exclude>', 'warning');
115
+ return false;
116
+ }
117
+ //# sourceMappingURL=profile-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-handlers.js","sourceRoot":"","sources":["../../src/commands/profile-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { SkillsCommandRequest } from './types.js';
2
+ export declare function handle_list_command({ mgr, ctx, }: SkillsCommandRequest): Promise<boolean>;
3
+ export declare function handle_show_command({ arg, mgr, ctx, }: SkillsCommandRequest): Promise<boolean>;
4
+ export declare function handle_toggle_command(request: SkillsCommandRequest): Promise<boolean>;
5
+ export declare function handle_import_command(request: SkillsCommandRequest): Promise<boolean>;
6
+ export declare function handle_sync_command({ arg, mgr, ctx, }: SkillsCommandRequest): Promise<boolean>;
7
+ export declare function handle_refresh_command({ mgr, ctx, }: SkillsCommandRequest): Promise<boolean>;
8
+ export declare function handle_defaults_command({ arg, mgr, ctx, }: SkillsCommandRequest): Promise<boolean>;