@pratikpsl/agent-skills 0.9.0 → 1.1.0

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 (94) hide show
  1. package/README.md +59 -99
  2. package/dist/bin/agent-skills.d.ts.map +1 -1
  3. package/dist/bin/agent-skills.js +0 -3
  4. package/dist/bin/agent-skills.js.map +1 -1
  5. package/dist/cli/index.js +41 -33
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/core/ide-map.d.ts +3 -9
  8. package/dist/core/ide-map.d.ts.map +1 -1
  9. package/dist/core/ide-map.js +16 -33
  10. package/dist/core/ide-map.js.map +1 -1
  11. package/dist/core/install-template.d.ts +21 -0
  12. package/dist/core/install-template.d.ts.map +1 -0
  13. package/dist/core/install-template.js +119 -0
  14. package/dist/core/install-template.js.map +1 -0
  15. package/dist/core/resolve-template.d.ts +4 -0
  16. package/dist/core/resolve-template.d.ts.map +1 -0
  17. package/dist/core/resolve-template.js +22 -0
  18. package/dist/core/resolve-template.js.map +1 -0
  19. package/package.json +2 -2
  20. package/templates/default/instructions.md +26 -28
  21. package/templates/dotnet/AgentSkills/agents/architect.agent.md +8 -54
  22. package/templates/dotnet/AgentSkills/agents/developer.agent.md +8 -83
  23. package/templates/dotnet/AgentSkills/skills/csharp-xunit/SKILL.md +32 -58
  24. package/templates/dotnet/AgentSkills/skills/dotnet-best-practices/SKILL.md +62 -153
  25. package/templates/dotnet/AgentSkills/skills/performance/SKILL.md +18 -0
  26. package/templates/react/AgentSkills/agents/developer.agent.md +23 -0
  27. package/templates/react/AgentSkills/skills/performance/SKILL.md +18 -0
  28. package/templates/react/AgentSkills/skills/react-typescript/SKILL.md +22 -0
  29. package/templates/react/AgentSkills/skills/testing/SKILL.md +17 -0
  30. package/templates/shared/AgentSkills/OPERATING.md +15 -0
  31. package/templates/shared/AgentSkills/agents/architect.agent.md +12 -0
  32. package/templates/shared/AgentSkills/agents/reviewer.agent.md +27 -0
  33. package/templates/shared/AgentSkills/skills/principles/SKILL.md +31 -0
  34. package/templates/shared/AgentSkills/skills/security/SKILL.md +18 -0
  35. package/templates/shared/AgentSkills/skills/standards/SKILL.md +27 -0
  36. package/templates/shared/entry-points/instructions.md +28 -0
  37. package/dist/cli/commands/add.d.ts +0 -3
  38. package/dist/cli/commands/add.d.ts.map +0 -1
  39. package/dist/cli/commands/add.js +0 -73
  40. package/dist/cli/commands/add.js.map +0 -1
  41. package/dist/cli/commands/dotnet-setup.d.ts +0 -5
  42. package/dist/cli/commands/dotnet-setup.d.ts.map +0 -1
  43. package/dist/cli/commands/dotnet-setup.js +0 -83
  44. package/dist/cli/commands/dotnet-setup.js.map +0 -1
  45. package/dist/cli/commands/init.d.ts +0 -3
  46. package/dist/cli/commands/init.d.ts.map +0 -1
  47. package/dist/cli/commands/init.js +0 -36
  48. package/dist/cli/commands/init.js.map +0 -1
  49. package/dist/cli/commands/list.d.ts +0 -3
  50. package/dist/cli/commands/list.d.ts.map +0 -1
  51. package/dist/cli/commands/list.js +0 -37
  52. package/dist/cli/commands/list.js.map +0 -1
  53. package/dist/cli/commands/setup.d.ts +0 -9
  54. package/dist/cli/commands/setup.d.ts.map +0 -1
  55. package/dist/cli/commands/setup.js +0 -77
  56. package/dist/cli/commands/setup.js.map +0 -1
  57. package/dist/core/copy-skills.d.ts +0 -30
  58. package/dist/core/copy-skills.d.ts.map +0 -1
  59. package/dist/core/copy-skills.js +0 -84
  60. package/dist/core/copy-skills.js.map +0 -1
  61. package/dist/core/load-pack.d.ts +0 -15
  62. package/dist/core/load-pack.d.ts.map +0 -1
  63. package/dist/core/load-pack.js +0 -35
  64. package/dist/core/load-pack.js.map +0 -1
  65. package/dist/core/manifest.d.ts +0 -21
  66. package/dist/core/manifest.d.ts.map +0 -1
  67. package/dist/core/manifest.js +0 -170
  68. package/dist/core/manifest.js.map +0 -1
  69. package/dist/core/resolve-pack.d.ts +0 -7
  70. package/dist/core/resolve-pack.d.ts.map +0 -1
  71. package/dist/core/resolve-pack.js +0 -59
  72. package/dist/core/resolve-pack.js.map +0 -1
  73. package/templates/dotnet/AgentSkills/OPERATING.md +0 -85
  74. package/templates/dotnet/AgentSkills/README.md +0 -64
  75. package/templates/dotnet/AgentSkills/agents/README.md +0 -16
  76. package/templates/dotnet/AgentSkills/entry-points/entry-point.md +0 -49
  77. package/templates/dotnet/AgentSkills/memory/index.md +0 -22
  78. package/templates/dotnet/AgentSkills/memory/lessons/api.md +0 -3
  79. package/templates/dotnet/AgentSkills/memory/lessons/auth.md +0 -3
  80. package/templates/dotnet/AgentSkills/memory/lessons/csharp.md +0 -3
  81. package/templates/dotnet/AgentSkills/memory/lessons/db.md +0 -3
  82. package/templates/dotnet/AgentSkills/memory/lessons/design.md +0 -3
  83. package/templates/dotnet/AgentSkills/memory/lessons/infra.md +0 -8
  84. package/templates/dotnet/AgentSkills/memory/lessons/mcp.md +0 -3
  85. package/templates/dotnet/AgentSkills/memory/lessons/testing.md +0 -3
  86. package/templates/dotnet/AgentSkills/memory/schema.md +0 -26
  87. package/templates/dotnet/AgentSkills/skills/INDEX.md +0 -21
  88. package/templates/dotnet/AgentSkills/skills/README.md +0 -14
  89. package/templates/dotnet/AgentSkills/skills/code-standards/SKILL.md +0 -122
  90. package/templates/dotnet/AgentSkills/skills/core/SKILL.md +0 -83
  91. package/templates/dotnet/AgentSkills/skills/design/SKILL.md +0 -108
  92. package/templates/dotnet/AgentSkills/skills/harness/SKILL.md +0 -62
  93. package/templates/dotnet/AgentSkills/skills/mcp_dotnet/SKILL.md +0 -54
  94. package/templates/shared/manifest.json +0 -57
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @pratikpsl/agent-skills
2
2
 
3
- > Scaffold and manage AI agent skills across any project — like `shadcn/ui`, but for Cursor, Claude, Codex, Copilot, Antigravity, Windsurf, and Cline.
3
+ > Scaffold and manage AI agent skills across any project — for Cursor, Claude, Codex, Copilot, Antigravity, Windsurf, and Cline.
4
4
 
5
- `@pratikpsl/agent-skills` is a single npm package: a TypeScript CLI plus bundled skill **packs** under `templates/`. No runtime network fetch — packs ship inside the package, so setup works offline after install.
5
+ `@pratikpsl/agent-skills` is a single npm package: a TypeScript CLI plus bundled templates under `templates/`. No runtime network fetch — templates ship inside the package, so setup works offline after install.
6
6
 
7
7
  ---
8
8
 
@@ -18,7 +18,7 @@ Running with **no arguments** automatically scaffolds universal single-file agen
18
18
  # Installs instructions across all IDEs with cross-OS hardlinks by default
19
19
  npx @pratikpsl/agent-skills
20
20
 
21
- # Or install for a specific IDE directly
21
+ # Or install for a specific IDE / Agent directly
22
22
  npx @pratikpsl/agent-skills cursor # → .cursor/rules/instructions.md
23
23
  npx @pratikpsl/agent-skills claude # → CLAUDE.md
24
24
  npx @pratikpsl/agent-skills codex # → AGENTS.md
@@ -28,147 +28,107 @@ npx @pratikpsl/agent-skills windsurf # → .windsurfrules
28
28
  npx @pratikpsl/agent-skills cline # → .clinerules
29
29
  ```
30
30
 
31
- *(You can also use `bunx @pratikpsl/agent-skills` if running in Bun environments).*
32
-
33
- ### .NET / C# (Modular Skills Pack)
31
+ ### .NET / C# Template
34
32
 
35
33
  ```bash
36
- # Install the full .NET/C# skill set + every IDE entry-point
37
- npx @pratikpsl/agent-skills dotnet-setup
38
-
39
- # Or install shared skills + one IDE entry-point only
40
- npx @pratikpsl/agent-skills dotnet-setup cursor # → .cursor/rules/instructions.md
41
- npx @pratikpsl/agent-skills dotnet-setup claude # → CLAUDE.md
42
- npx @pratikpsl/agent-skills dotnet-setup codex # → AGENTS.md
43
- npx @pratikpsl/agent-skills dotnet-setup copilot # → .github/copilot-instructions.md
44
- npx @pratikpsl/agent-skills dotnet-setup antigravity # → .agents/GEMINI.md
34
+ # Install .NET agent skills + all IDE entry points
35
+ npx @pratikpsl/agent-skills dotnet
36
+
37
+ # Install .NET agent skills + specific agent entry point only
38
+ npx @pratikpsl/agent-skills dotnet --agent codex
39
+ npx @pratikpsl/agent-skills dotnet --agent cursor
45
40
  ```
46
41
 
47
- ---
42
+ ### React / TypeScript Template
43
+
44
+ ```bash
45
+ # Install React agent skills + all IDE entry points
46
+ npx @pratikpsl/agent-skills react
48
47
 
49
- ## Commands
48
+ # Install React agent skills + specific agent entry point only
49
+ npx @pratikpsl/agent-skills react --agent cursor
50
+ npx @pratikpsl/agent-skills react --agent claude
51
+ ```
50
52
 
51
- | Command | Description |
52
- | --- | --- |
53
- | `npx @pratikpsl/agent-skills [ide]` | **Default**: Scaffold single-file instructions with cross-OS hardlinks |
54
- | `npx @pratikpsl/agent-skills setup [ide]` | Explicit alias for instructions setup |
55
- | `npx @pratikpsl/agent-skills dotnet-setup [ide]` | Convenience installer for the .NET pack |
56
- | `npx @pratikpsl/agent-skills init` | Scaffold an empty `AgentSkills/` folder and `index.json` |
57
- | `npx @pratikpsl/agent-skills list` | List skills in known packs (`default`, `dotnet`) |
58
- | `npx @pratikpsl/agent-skills list <pack>` | List skills in a specific pack (`default`, `dotnet`, etc.) |
59
- | `npx @pratikpsl/agent-skills add <pack> <skill>` | Copy one skill into the project |
60
- | `npx @pratikpsl/agent-skills add <pack> --all` | Copy all skills from a pack |
61
- | `npx @pratikpsl/agent-skills --help` | Show CLI help |
62
- | `npx @pratikpsl/agent-skills --version` | Show CLI version |
53
+ *(You can also use `bunx @pratikpsl/agent-skills` in Bun environments).*
63
54
 
64
- *(All commands work identically with `bunx`)*
55
+ ---
65
56
 
66
- ### Options
57
+ ## CLI Options
67
58
 
68
- - `--force` — overwrite existing skill and entry-point files
69
- - `--hardlink` / `--no-hardlink` — control cross-OS hardlinking for shared entry points
70
- - `--path <dir>` — target project root (default: `process.cwd()`)
59
+ ```
60
+ Usage: agent-skills [options] [template]
61
+
62
+ Arguments:
63
+ template Template: default, dotnet, react; agent names install default guidance
64
+
65
+ Options:
66
+ -V, --version output the version number
67
+ --agent <name> Install one agent entry point: antigravity, claude, cline, codex, copilot, cursor, windsurf
68
+ --force Overwrite installed files (default: false)
69
+ --no-hardlink Copy agent entry points instead of hardlinking
70
+ --path <dir> Target project root (default: current working directory)
71
+ -h, --help display help for command
72
+ ```
71
73
 
72
74
  ---
73
75
 
74
- ## Packs
76
+ ## Bundled Templates
75
77
 
76
- | Pack | Path | Notes |
78
+ | Template | Path | Description |
77
79
  | --- | --- | --- |
78
- | `default` | `templates/default/` | Universal single-file agent instructions, cross-OS hardlinked across all IDEs |
79
- | `dotnet` | `templates/dotnet/` | .NET/C# skills, agents, memory, IDE entry-points |
80
-
81
- Aliases accepted by the CLI:
82
- - Default pack: `default`, `instructions`, `single-file`, `core`, `standard`, `universal`, `base`, `@pratikpsl/agent-skills`
83
- - .NET pack: `dotnet`, `skills-dotnet`, `@pratikpsl/agent-skills-dotnet`
84
-
85
- The repo also contains a `Skills/` tree of additional drafts and a `plugins/` folder. Those are **not** part of the published npm tarball (see `.npmignore` and the `files` whitelist in `package.json`).
80
+ | `default` | `templates/default/` | Universal single-file agent instructions, cross-OS hardlinked |
81
+ | `dotnet` | `templates/dotnet/` | .NET/C# skills, architecture & developer agents, memory |
82
+ | `react` | `templates/react/` | React & TypeScript skills, frontend testing, developer agent |
83
+ | `shared` | `templates/shared/` | Base operating contract, core skills (principles, standards, security), review agents |
86
84
 
87
85
  ---
88
86
 
89
- ## Repository layout
87
+ ## Repository Layout
90
88
 
91
89
  ```
92
90
  coding-skills-ai/
93
91
  ├── src/
94
92
  │ ├── bin/agent-skills.ts # CLI binary entry
95
- │ ├── cli/ # commander wiring + commands
96
- │ │ └── commands/ # init, list, add, dotnet-setup, setup
97
- │ └── core/ # resolve-pack, manifest, copy-skills, ide-map
93
+ │ ├── cli/index.ts # Commander CLI program
94
+ │ └── core/
95
+ │ ├── ide-map.ts # IDE entry point definitions and parser
96
+ │ ├── install-template.ts # Installation & merging engine
97
+ │ └── resolve-template.ts # Bundled template resolver
98
98
  ├── templates/
99
- │ ├── default/ # default instructions template
100
- │ ├── dotnet/ # shipped pack (AgentSkills/)
101
- │ └── shared/ # shared manifest
102
- ├── tests/ # Vitest suite
103
- ├── Skills/ # extra drafts (not published)
104
- ├── plugins/ # local experiments (not published)
105
- ├── .github/workflows/ # CI + npm publish on version tags
106
- ├── bun.lock # reproducible lockfile
99
+ │ ├── default/ # Single-file instructions
100
+ │ ├── dotnet/ # .NET template
101
+ │ ├── react/ # React template
102
+ │ └── shared/ # Shared operating contract & memory
103
+ ├── tests/ # Vitest test suite
104
+ ├── bun.lock # Reproducible lockfile
107
105
  ├── package.json
108
- ├── tsconfig.json # emits to dist/
106
+ ├── tsconfig.json
109
107
  ├── vitest.config.ts
110
- ├── SECURITY.md # Supply chain & vulnerability reporting policy
108
+ ├── SECURITY.md
111
109
  ├── LICENSE # Apache-2.0
112
110
  └── README.md
113
111
  ```
114
112
 
115
- Build output: `tsc` compiles `src/` → `dist/`. The published binary is `dist/bin/agent-skills.js`. Pack templates stay at package-root `templates/` (included via `files`).
116
-
117
113
  ---
118
114
 
119
- ## Local development
115
+ ## Local Development
120
116
 
121
117
  ```bash
122
118
  bun install
123
119
  bun run build
124
120
  bun test
125
-
126
- # Optional: try the CLI globally from this checkout
127
- bun link
128
- agent-skills --help
129
- agent-skills list dotnet
130
121
  ```
131
122
 
132
- Useful scripts:
133
-
134
- | Script | What it does |
135
- | --- | --- |
136
- | `bun run build` | `tsc` → `dist/` |
137
- | `bun test` | Vitest (`tests/**/*.test.ts`) |
138
- | `bun run test:watch` | Vitest watch mode |
139
- | `bun run dry-run` | Build + `npm publish --dry-run` |
140
-
141
- ---
142
-
143
- ## Publish checklist (maintainers)
144
-
145
- 1. Ensure `main` is green (CI: Bun — build + test).
146
- 2. Confirm version in `package.json` (and `templates/shared/manifest.json`).
147
- 3. Verify the tarball includes templates and compiled `dist/`:
148
- ```bash
149
- bun run build
150
- bun pm pack --dry-run
151
- # Expect: dist/** and templates/** (not Skills/ or src/)
152
- ```
153
- 4. Publish:
154
- - **Trusted Publisher (preferred):** push an annotated tag matching `package.json`, e.g. `v0.9.0`. Workflow `.github/workflows/publish.yml` runs tests and `npm publish --provenance`.
155
- - **Manual:**
156
- ```bash
157
- npm login
158
- bun run build && bun test
159
- npm publish --access public --otp=YOUR_6_DIGIT_OTP
160
- ```
161
- 5. Confirm on npm: https://www.npmjs.com/package/@pratikpsl/agent-skills
162
- 6. Smoke-test: `npx @pratikpsl/agent-skills@0.9.0 --version` and `dotnet-setup` in a throwaway folder.
163
-
164
123
  ---
165
124
 
166
125
  ## Security
167
126
 
168
- Please see [`SECURITY.md`](./SECURITY.md) for our security policy, provenance verification, and vulnerability reporting procedures.
127
+ Please see [`SECURITY.md`](./SECURITY.md) for our security policy and reporting procedures.
169
128
 
170
129
  ---
171
130
 
172
131
  ## License
173
132
 
174
133
  Apache License 2.0 — see [`LICENSE`](./LICENSE).
134
+
@@ -1 +1 @@
1
- {"version":3,"file":"agent-skills.d.ts","sourceRoot":"","sources":["../../src/bin/agent-skills.ts"],"names":[],"mappings":";AAKA,OAAO,iBAAiB,CAAC"}
1
+ {"version":3,"file":"agent-skills.d.ts","sourceRoot":"","sources":["../../src/bin/agent-skills.ts"],"names":[],"mappings":";AACA,OAAO,iBAAiB,CAAC"}
@@ -1,6 +1,3 @@
1
1
  #!/usr/bin/env node
2
- // src/bin/agent-skills.ts
3
- // Thin entrypoint for the `agent-skills` CLI.
4
- // Delegates immediately to cli/index.ts which wires up commander.
5
2
  import "../cli/index.js";
6
3
  //# sourceMappingURL=agent-skills.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-skills.js","sourceRoot":"","sources":["../../src/bin/agent-skills.ts"],"names":[],"mappings":";AACA,0BAA0B;AAC1B,8CAA8C;AAC9C,kEAAkE;AAElE,OAAO,iBAAiB,CAAC"}
1
+ {"version":3,"file":"agent-skills.js","sourceRoot":"","sources":["../../src/bin/agent-skills.ts"],"names":[],"mappings":";AACA,OAAO,iBAAiB,CAAC"}
package/dist/cli/index.js CHANGED
@@ -1,43 +1,51 @@
1
- // src/cli/index.ts
2
- // Wires up the root `commander` program and registers all sub-commands.
3
- // This file is the only place that imports commander; sub-commands receive
4
- // the program instance so they stay independently testable.
5
1
  import { Command } from "commander";
6
2
  import { createRequire } from "module";
7
- import { initCommand } from "./commands/init.js";
8
- import { listCommand } from "./commands/list.js";
9
- import { addCommand } from "./commands/add.js";
10
- import { dotnetSetupCommand } from "./commands/dotnet-setup.js";
11
- import { setupCommand, runSetup } from "./commands/setup.js";
12
- import { VALID_IDE_NAMES } from "../core/ide-map.js";
13
- // Read version from our own package.json without a JSON import assertion
14
- // (works in Node 18 without the --experimental-json-modules flag).
3
+ import { installDefaultTemplate, installTemplate } from "../core/install-template.js";
4
+ import { AGENT_NAMES, parseAgentName } from "../core/ide-map.js";
5
+ import { resolveSharedTemplate, resolveTemplate, TEMPLATE_NAMES } from "../core/resolve-template.js";
15
6
  const require = createRequire(import.meta.url);
16
7
  const { version } = require("../../package.json");
8
+ function runInstall(template, options) {
9
+ const isAgent = template && AGENT_NAMES.includes(template.toLowerCase());
10
+ const implicitAgent = isAgent ? parseAgentName(template) : undefined;
11
+ if (implicitAgent && options.agent) {
12
+ throw new Error("Choose an agent with either the argument or --agent, not both.");
13
+ }
14
+ const selectedTemplate = implicitAgent ? "default" : template ?? "default";
15
+ const agent = implicitAgent ?? parseAgentName(options.agent);
16
+ const targetDir = options.path;
17
+ const hardlink = options.hardlink ?? true;
18
+ const result = selectedTemplate === "default"
19
+ ? installDefaultTemplate(resolveTemplate(selectedTemplate), {
20
+ agent,
21
+ force: options.force,
22
+ hardlink,
23
+ targetDir,
24
+ })
25
+ : installTemplate({
26
+ agent,
27
+ force: options.force,
28
+ hardlink,
29
+ sharedDir: resolveSharedTemplate(),
30
+ targetDir,
31
+ templateDir: resolveTemplate(selectedTemplate),
32
+ });
33
+ console.log(`Installed ${selectedTemplate}: ${result.written.length} written, ${result.skipped.length} skipped.`);
34
+ }
17
35
  const program = new Command();
18
36
  program
19
37
  .name("agent-skills")
20
- .description("Scaffold and manage AI agent skills across projects")
38
+ .description("Install shared coding-agent guidance and a framework template")
21
39
  .version(version)
22
- .argument("[ide]", `IDE entry-point to install (${VALID_IDE_NAMES}). Omit to install all.`)
23
- .option("--force", "Overwrite existing files", false)
24
- .option("--no-hardlink", "Copy separate files instead of hardlinking")
25
- .option("--path <dir>", "Target project root (default: cwd)", process.cwd())
26
- .action((ide, options) => {
27
- runSetup(ide, {
28
- force: options.force,
29
- path: options.path,
30
- hardlink: options.hardlink ?? true,
31
- });
32
- });
33
- setupCommand(program);
34
- dotnetSetupCommand(program);
35
- initCommand(program);
36
- listCommand(program);
37
- addCommand(program);
38
- program.parseAsync(process.argv).catch((err) => {
39
- const message = err instanceof Error ? err.message : String(err);
40
- console.error(`\n✗ ${message}`);
41
- process.exit(1);
40
+ .argument("[template]", `Template: ${TEMPLATE_NAMES.join(", ")}; agent names install default guidance`)
41
+ .option("--agent <name>", `Install one agent entry point: ${AGENT_NAMES.join(", ")}`)
42
+ .option("--force", "Overwrite installed files", false)
43
+ .option("--no-hardlink", "Copy agent entry points instead of hardlinking")
44
+ .option("--path <dir>", "Target project root", process.cwd())
45
+ .action((template, options) => runInstall(template, options));
46
+ program.parseAsync(process.argv).catch((error) => {
47
+ const message = error instanceof Error ? error.message : String(error);
48
+ console.error(`Error: ${message}`);
49
+ process.exitCode = 1;
42
50
  });
43
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,wEAAwE;AACxE,2EAA2E;AAC3E,4DAA4D;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,yEAAyE;AACzE,mEAAmE;AACnE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEzE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CACP,OAAO,EACP,+BAA+B,eAAe,yBAAyB,CACxE;KACA,MAAM,CAAC,SAAS,EAAE,0BAA0B,EAAE,KAAK,CAAC;KACpD,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;KACrE,MAAM,CAAC,cAAc,EAAE,oCAAoC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC3E,MAAM,CAAC,CAAC,GAAuB,EAAE,OAA6D,EAAE,EAAE;IACjG,QAAQ,CAAC,GAAG,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;KACnC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,UAAU,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;IAChC,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":"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"}
@@ -1,10 +1,4 @@
1
- import type { SkillEntry } from "./manifest.js";
2
- export declare const IDE_ENTRY_POINT_MAP: Record<string, string>;
3
- export declare const VALID_IDE_NAMES: string;
4
- export declare const ENTRY_POINT_PREFIX = "entry-point:";
5
- /**
6
- * Filters skills for a given IDE (or all IDEs when undefined).
7
- * Deduplicates multiple skills targeting the same destination.
8
- */
9
- export declare function filterSkillsForIde(skills: SkillEntry[], ide?: string): SkillEntry[];
1
+ export declare const IDE_ENTRY_POINTS: Record<string, string>;
2
+ export declare const AGENT_NAMES: string[];
3
+ export declare function parseAgentName(value?: string): string | undefined;
10
4
  //# sourceMappingURL=ide-map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ide-map.d.ts","sourceRoot":"","sources":["../../src/core/ide-map.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQtD,CAAC;AAEF,eAAO,MAAM,eAAe,QAA8C,CAAC;AAC3E,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAAE,EACpB,GAAG,CAAC,EAAE,MAAM,GACX,UAAU,EAAE,CAuBd"}
1
+ {"version":3,"file":"ide-map.d.ts","sourceRoot":"","sources":["../../src/core/ide-map.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQnD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAgC,CAAC;AAEzD,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKjE"}
@@ -1,36 +1,19 @@
1
- // src/core/ide-map.ts
2
- // Central registry of supported AI coding IDEs and their entry-point mappings.
3
- export const IDE_ENTRY_POINT_MAP = {
4
- cursor: "entry-point:cursor",
5
- claude: "entry-point:claude",
6
- codex: "entry-point:codex",
7
- copilot: "entry-point:copilot",
8
- antigravity: "entry-point:antigravity",
9
- windsurf: "entry-point:windsurf",
10
- cline: "entry-point:cline",
1
+ export const IDE_ENTRY_POINTS = {
2
+ antigravity: ".agents/GEMINI.md",
3
+ claude: "CLAUDE.md",
4
+ cline: ".clinerules",
5
+ codex: "AGENTS.md",
6
+ copilot: ".github/copilot-instructions.md",
7
+ cursor: ".cursor/rules/instructions.md",
8
+ windsurf: ".windsurfrules",
11
9
  };
12
- export const VALID_IDE_NAMES = Object.keys(IDE_ENTRY_POINT_MAP).join(", ");
13
- export const ENTRY_POINT_PREFIX = "entry-point:";
14
- /**
15
- * Filters skills for a given IDE (or all IDEs when undefined).
16
- * Deduplicates multiple skills targeting the same destination.
17
- */
18
- export function filterSkillsForIde(skills, ide) {
19
- if (!ide) {
20
- const seen = new Set();
21
- return skills.filter((s) => {
22
- const dest = s.dest ?? s.path;
23
- if (seen.has(dest))
24
- return false;
25
- seen.add(dest);
26
- return true;
27
- });
28
- }
29
- const targetSkillName = IDE_ENTRY_POINT_MAP[ide.toLowerCase()];
30
- if (!targetSkillName) {
31
- throw new Error(`Unknown IDE "${ide}". Valid options are: ${VALID_IDE_NAMES}`);
32
- }
33
- return skills.filter((s) => (!s.name.startsWith(ENTRY_POINT_PREFIX) && s.name !== "instructions") ||
34
- s.name === targetSkillName);
10
+ export const AGENT_NAMES = Object.keys(IDE_ENTRY_POINTS);
11
+ export function parseAgentName(value) {
12
+ if (!value)
13
+ return undefined;
14
+ const agent = value.toLowerCase();
15
+ if (agent in IDE_ENTRY_POINTS)
16
+ return agent;
17
+ throw new Error(`Unknown agent "${value}". Choose: ${AGENT_NAMES.join(", ")}.`);
35
18
  }
36
19
  //# sourceMappingURL=ide-map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ide-map.js","sourceRoot":"","sources":["../../src/core/ide-map.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,+EAA+E;AAI/E,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,MAAM,EAAE,oBAAoB;IAC5B,MAAM,EAAE,oBAAoB;IAC5B,KAAK,EAAE,mBAAmB;IAC1B,OAAO,EAAE,qBAAqB;IAC9B,WAAW,EAAE,yBAAyB;IACtC,QAAQ,EAAE,sBAAsB;IAChC,KAAK,EAAE,mBAAmB;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAoB,EACpB,GAAY;IAEZ,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,gBAAgB,GAAG,yBAAyB,eAAe,EAAE,CAC9D,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;QACrE,CAAC,CAAC,IAAI,KAAK,eAAe,CAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ide-map.js","sourceRoot":"","sources":["../../src/core/ide-map.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,WAAW,EAAE,mBAAmB;IAChC,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE,+BAA+B;IACvC,QAAQ,EAAE,gBAAgB;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAEzD,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,KAAK,IAAI,gBAAgB;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,cAAc,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface InstallResult {
2
+ written: string[];
3
+ skipped: string[];
4
+ }
5
+ export interface InstallOptions {
6
+ agent?: string;
7
+ force: boolean;
8
+ hardlink: boolean;
9
+ targetDir: string;
10
+ sharedDir: string;
11
+ templateDir: string;
12
+ }
13
+ export interface InstallDefaultOptions {
14
+ agent?: string;
15
+ force: boolean;
16
+ hardlink: boolean;
17
+ targetDir: string;
18
+ }
19
+ export declare function installTemplate(options: InstallOptions): InstallResult;
20
+ export declare function installDefaultTemplate(sourceDir: string, options: InstallDefaultOptions): InstallResult;
21
+ //# sourceMappingURL=install-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-template.d.ts","sourceRoot":"","sources":["../../src/core/install-template.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAkID,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CAiBtE;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,qBAAqB,GAC7B,aAAa,CAUf"}
@@ -0,0 +1,119 @@
1
+ import { copyFileSync, existsSync, linkSync, mkdirSync, readdirSync, rmSync } from "fs";
2
+ import path from "path";
3
+ import { IDE_ENTRY_POINTS } from "./ide-map.js";
4
+ function relativePath(targetDir, filePath) {
5
+ return path.relative(targetDir, filePath).replaceAll("\\", "/");
6
+ }
7
+ function collectExistingFiles(dir) {
8
+ const files = new Set();
9
+ if (!existsSync(dir))
10
+ return files;
11
+ function walk(current) {
12
+ for (const entry of readdirSync(current, { withFileTypes: true })) {
13
+ const full = path.join(current, entry.name);
14
+ if (entry.isDirectory()) {
15
+ walk(full);
16
+ }
17
+ else {
18
+ files.add(full);
19
+ }
20
+ }
21
+ }
22
+ walk(dir);
23
+ return files;
24
+ }
25
+ function copyFile(source, destination, force, existingBeforeInstall) {
26
+ if (existingBeforeInstall.has(destination) && !force) {
27
+ return false;
28
+ }
29
+ if (existsSync(destination)) {
30
+ rmSync(destination, { force: true, recursive: true });
31
+ }
32
+ mkdirSync(path.dirname(destination), { recursive: true });
33
+ copyFileSync(source, destination);
34
+ return true;
35
+ }
36
+ function mergeDirectory(sourceDir, targetDir, projectDir, force, existingBeforeInstall, result) {
37
+ if (!existsSync(sourceDir))
38
+ return;
39
+ mkdirSync(targetDir, { recursive: true });
40
+ for (const entry of readdirSync(sourceDir, { withFileTypes: true })) {
41
+ const source = path.join(sourceDir, entry.name);
42
+ const target = path.join(targetDir, entry.name);
43
+ if (entry.isDirectory()) {
44
+ mergeDirectory(source, target, projectDir, force, existingBeforeInstall, result);
45
+ }
46
+ else {
47
+ const rel = relativePath(projectDir, target);
48
+ if (copyFile(source, target, force, existingBeforeInstall)) {
49
+ if (!result.written.includes(rel)) {
50
+ result.written.push(rel);
51
+ }
52
+ }
53
+ else {
54
+ if (!result.skipped.includes(rel)) {
55
+ result.skipped.push(rel);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
61
+ function selectedEntryPoints(agent) {
62
+ return agent ? [IDE_ENTRY_POINTS[agent]] : Object.values(IDE_ENTRY_POINTS);
63
+ }
64
+ function linkOrCopy(source, target, primary, options, existingBeforeInstall) {
65
+ if (existingBeforeInstall.has(target) && !options.force) {
66
+ return false;
67
+ }
68
+ if (existsSync(target)) {
69
+ rmSync(target, { force: true, recursive: true });
70
+ }
71
+ mkdirSync(path.dirname(target), { recursive: true });
72
+ if (options.hardlink && primary) {
73
+ try {
74
+ linkSync(primary, target);
75
+ return true;
76
+ }
77
+ catch {
78
+ // Non-hardlink-compatible filesystems use copy fallback
79
+ }
80
+ }
81
+ copyFileSync(source, target);
82
+ return true;
83
+ }
84
+ function installEntryPoints(source, options, existingBeforeInstall, result) {
85
+ let primary;
86
+ for (const destination of selectedEntryPoints(options.agent)) {
87
+ const target = path.join(options.targetDir, destination);
88
+ const rel = relativePath(options.targetDir, target);
89
+ if (linkOrCopy(source, target, primary, options, existingBeforeInstall)) {
90
+ primary ??= target;
91
+ if (!result.written.includes(rel)) {
92
+ result.written.push(rel);
93
+ }
94
+ }
95
+ else {
96
+ if (!result.skipped.includes(rel)) {
97
+ result.skipped.push(rel);
98
+ }
99
+ }
100
+ }
101
+ }
102
+ export function installTemplate(options) {
103
+ const result = { written: [], skipped: [] };
104
+ const existing = collectExistingFiles(options.targetDir);
105
+ const sharedSkills = path.join(options.sharedDir, "AgentSkills");
106
+ const templateSkills = path.join(options.templateDir, "AgentSkills");
107
+ const targetSkills = path.join(options.targetDir, "AgentSkills");
108
+ mergeDirectory(sharedSkills, targetSkills, options.targetDir, options.force, existing, result);
109
+ mergeDirectory(templateSkills, targetSkills, options.targetDir, options.force, existing, result);
110
+ installEntryPoints(path.join(options.sharedDir, "entry-points", "instructions.md"), options, existing, result);
111
+ return result;
112
+ }
113
+ export function installDefaultTemplate(sourceDir, options) {
114
+ const result = { written: [], skipped: [] };
115
+ const existing = collectExistingFiles(options.targetDir);
116
+ installEntryPoints(path.join(sourceDir, "instructions.md"), options, existing, result);
117
+ return result;
118
+ }
119
+ //# sourceMappingURL=install-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-template.js","sourceRoot":"","sources":["../../src/core/install-template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const TEMPLATE_NAMES: string[];
2
+ export declare function resolveSharedTemplate(): string;
3
+ export declare function resolveTemplate(name: string): string;
4
+ //# sourceMappingURL=resolve-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-template.d.ts","sourceRoot":"","sources":["../../src/core/resolve-template.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc,UAAiC,CAAC;AAM7D,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWpD"}
@@ -0,0 +1,22 @@
1
+ import { existsSync } from "fs";
2
+ import path from "path";
3
+ import { fileURLToPath } from "url";
4
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
+ export const TEMPLATE_NAMES = ["default", "dotnet", "react"];
6
+ function templatesRoot() {
7
+ return path.resolve(__dirname, "..", "..", "templates");
8
+ }
9
+ export function resolveSharedTemplate() {
10
+ return path.join(templatesRoot(), "shared");
11
+ }
12
+ export function resolveTemplate(name) {
13
+ if (!TEMPLATE_NAMES.includes(name)) {
14
+ throw new Error(`Unknown template "${name}". Choose: ${TEMPLATE_NAMES.join(", ")}.`);
15
+ }
16
+ const templateDir = path.join(templatesRoot(), name);
17
+ if (!existsSync(templateDir)) {
18
+ throw new Error(`Template "${name}" is not bundled with this package.`);
19
+ }
20
+ return templateDir;
21
+ }
22
+ //# sourceMappingURL=resolve-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-template.js","sourceRoot":"","sources":["../../src/core/resolve-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAE7D,SAAS,aAAa;IACpB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,cAAc,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,qCAAqC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}