@pratikpsl/agent-skills 0.5.0 → 0.7.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 (40) hide show
  1. package/README.md +113 -51
  2. package/dist/cli/commands/add.d.ts.map +1 -1
  3. package/dist/cli/commands/add.js +2 -0
  4. package/dist/cli/commands/add.js.map +1 -1
  5. package/dist/cli/commands/dotnet-setup.d.ts +2 -11
  6. package/dist/cli/commands/dotnet-setup.d.ts.map +1 -1
  7. package/dist/cli/commands/dotnet-setup.js +5 -32
  8. package/dist/cli/commands/dotnet-setup.js.map +1 -1
  9. package/dist/cli/commands/list.js +1 -1
  10. package/dist/cli/commands/list.js.map +1 -1
  11. package/dist/cli/commands/setup.d.ts +9 -0
  12. package/dist/cli/commands/setup.d.ts.map +1 -0
  13. package/dist/cli/commands/setup.js +77 -0
  14. package/dist/cli/commands/setup.js.map +1 -0
  15. package/dist/cli/index.js +16 -2
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/core/copy-skills.d.ts +3 -1
  18. package/dist/core/copy-skills.d.ts.map +1 -1
  19. package/dist/core/copy-skills.js +35 -11
  20. package/dist/core/copy-skills.js.map +1 -1
  21. package/dist/core/ide-map.d.ts +10 -0
  22. package/dist/core/ide-map.d.ts.map +1 -0
  23. package/dist/core/ide-map.js +37 -0
  24. package/dist/core/ide-map.js.map +1 -0
  25. package/dist/core/manifest.d.ts +2 -10
  26. package/dist/core/manifest.d.ts.map +1 -1
  27. package/dist/core/manifest.js +120 -24
  28. package/dist/core/manifest.js.map +1 -1
  29. package/dist/core/resolve-pack.d.ts.map +1 -1
  30. package/dist/core/resolve-pack.js +23 -2
  31. package/dist/core/resolve-pack.js.map +1 -1
  32. package/package.json +25 -7
  33. package/templates/default/instructions.md +34 -0
  34. package/templates/dotnet/AgentSkills/entry-points/{copilot-instructions.md → entry-point.md} +2 -3
  35. package/templates/shared/manifest.json +62 -0
  36. package/templates/dotnet/AgentSkills/entry-points/AGENTS.md +0 -50
  37. package/templates/dotnet/AgentSkills/entry-points/CLAUDE.md +0 -50
  38. package/templates/dotnet/AgentSkills/entry-points/antigravity-instructions.md +0 -50
  39. package/templates/dotnet/AgentSkills/entry-points/cursor-instructions.md +0 -50
  40. package/templates/dotnet/manifest.json +0 -92
@@ -0,0 +1,10 @@
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[];
10
+ //# sourceMappingURL=ide-map.d.ts.map
@@ -0,0 +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,CAStD,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"}
@@ -0,0 +1,37 @@
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",
11
+ aider: "entry-point:aider",
12
+ };
13
+ export const VALID_IDE_NAMES = Object.keys(IDE_ENTRY_POINT_MAP).join(", ");
14
+ export const ENTRY_POINT_PREFIX = "entry-point:";
15
+ /**
16
+ * Filters skills for a given IDE (or all IDEs when undefined).
17
+ * Deduplicates multiple skills targeting the same destination.
18
+ */
19
+ export function filterSkillsForIde(skills, ide) {
20
+ if (!ide) {
21
+ const seen = new Set();
22
+ return skills.filter((s) => {
23
+ const dest = s.dest ?? s.path;
24
+ if (seen.has(dest))
25
+ return false;
26
+ seen.add(dest);
27
+ return true;
28
+ });
29
+ }
30
+ const targetSkillName = IDE_ENTRY_POINT_MAP[ide.toLowerCase()];
31
+ if (!targetSkillName) {
32
+ throw new Error(`Unknown IDE "${ide}". Valid options are: ${VALID_IDE_NAMES}`);
33
+ }
34
+ return skills.filter((s) => (!s.name.startsWith(ENTRY_POINT_PREFIX) && s.name !== "instructions") ||
35
+ s.name === targetSkillName);
36
+ }
37
+ //# sourceMappingURL=ide-map.js.map
@@ -0,0 +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;IAC1B,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"}
@@ -5,11 +5,7 @@ export interface SkillEntry {
5
5
  description: string;
6
6
  /** Source path of the skill, relative to the pack root. */
7
7
  path: string;
8
- /**
9
- * Destination path in the target project, relative to the project root.
10
- * When absent, `path` is used as the destination.
11
- * Use this for IDE entry-point files that must land outside AgentSkills/.
12
- */
8
+ /** Destination path in the target project, relative to the project root. */
13
9
  dest?: string;
14
10
  }
15
11
  export interface Manifest {
@@ -20,10 +16,6 @@ export interface Manifest {
20
16
  /** All skills provided by this pack. */
21
17
  skills: SkillEntry[];
22
18
  }
23
- /**
24
- * Reads and validates the manifest.json for a pack.
25
- *
26
- * @throws When manifest is missing, unreadable, or structurally invalid.
27
- */
19
+ export declare function discoverSkills(packDir: string): SkillEntry[];
28
20
  export declare function readManifest(packDir: string): Manifest;
29
21
  //# sourceMappingURL=manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,UAAU;IACzB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAkCtD"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AA8FD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAkB5D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAyCtD"}
@@ -1,26 +1,127 @@
1
1
  // src/core/manifest.ts
2
- // Reads and validates a pack's manifest.json.
3
- //
4
- // The manifest is the contract between a skills pack and the CLI.
5
- // It declares what skills exist, where their source files are, and where
6
- // they should be placed in the target project.
7
- import { readFileSync, existsSync } from "fs";
2
+ // Reads and validates a pack's manifest.json, or auto-discovers skills from disk
3
+ // when manifest.json is not present.
4
+ import { readFileSync, existsSync, readdirSync } from "fs";
8
5
  import path from "path";
9
- /**
10
- * Reads and validates the manifest.json for a pack.
11
- *
12
- * @throws When manifest is missing, unreadable, or structurally invalid.
13
- */
6
+ import { IDE_ENTRY_POINT_MAP } from "./ide-map.js";
7
+ const DEFAULT_DESCRIPTIONS = {
8
+ OPERATING: "Shared operating contract: bootstrap sequence, working rules, completion gate for all agents.",
9
+ agents: "Agent persona definitions: architect (design/CQRS) and developer (.NET C# implementation).",
10
+ memory: "Persistent agent memory: domain lesson files and memory schema for learning loops.",
11
+ instructions: "Canonical single-file coding agent instructions (Goal, Principles, Definition of Done).",
12
+ };
13
+ const IDE_DESTINATIONS = {
14
+ "entry-point:claude": "CLAUDE.md",
15
+ "entry-point:codex": "AGENTS.md",
16
+ "entry-point:copilot": ".github/copilot-instructions.md",
17
+ "entry-point:cursor": ".cursor/rules/instructions.md",
18
+ "entry-point:antigravity": ".agents/GEMINI.md",
19
+ "entry-point:windsurf": ".windsurfrules",
20
+ "entry-point:cline": ".clinerules",
21
+ "entry-point:aider": "CONVENTIONS.md",
22
+ };
23
+ function parseSkillDescription(skillDir, skillName) {
24
+ const skillFile = path.join(skillDir, "SKILL.md");
25
+ if (existsSync(skillFile)) {
26
+ try {
27
+ const raw = readFileSync(skillFile, "utf8");
28
+ const match = raw.match(/^description:\s*(?:>|\|)?\s*\n?([^\n\r]+)/m);
29
+ if (match && match[1]) {
30
+ return match[1].trim();
31
+ }
32
+ }
33
+ catch {
34
+ // ignore
35
+ }
36
+ }
37
+ return DEFAULT_DESCRIPTIONS[skillName] ?? `Skill definition for ${skillName}.`;
38
+ }
39
+ function discoverIdeEntryPoints(entryPointSrc) {
40
+ const skills = [];
41
+ for (const [ide, skillName] of Object.entries(IDE_ENTRY_POINT_MAP)) {
42
+ skills.push({
43
+ name: skillName,
44
+ description: `Lightweight ${ide} entry point.`,
45
+ path: entryPointSrc,
46
+ dest: IDE_DESTINATIONS[skillName],
47
+ });
48
+ }
49
+ return skills;
50
+ }
51
+ function discoverAgentSkills(packDir) {
52
+ const skills = [];
53
+ const agentSkillsDir = path.join(packDir, "AgentSkills");
54
+ if (existsSync(path.join(agentSkillsDir, "OPERATING.md"))) {
55
+ skills.push({
56
+ name: "OPERATING",
57
+ description: DEFAULT_DESCRIPTIONS.OPERATING,
58
+ path: "AgentSkills/OPERATING.md",
59
+ });
60
+ }
61
+ const skillsSubdir = path.join(agentSkillsDir, "skills");
62
+ if (existsSync(skillsSubdir)) {
63
+ const entries = readdirSync(skillsSubdir, { withFileTypes: true });
64
+ for (const entry of entries) {
65
+ if (entry.isDirectory()) {
66
+ const fullSkillDir = path.join(skillsSubdir, entry.name);
67
+ skills.push({
68
+ name: entry.name,
69
+ description: parseSkillDescription(fullSkillDir, entry.name),
70
+ path: `AgentSkills/skills/${entry.name}`,
71
+ });
72
+ }
73
+ }
74
+ }
75
+ for (const item of ["agents", "memory"]) {
76
+ if (existsSync(path.join(agentSkillsDir, item))) {
77
+ skills.push({
78
+ name: item,
79
+ description: DEFAULT_DESCRIPTIONS[item] ?? `${item} definitions.`,
80
+ path: `AgentSkills/${item}`,
81
+ });
82
+ }
83
+ }
84
+ const epFile = path.join(agentSkillsDir, "entry-points", "entry-point.md");
85
+ if (existsSync(epFile)) {
86
+ skills.push(...discoverIdeEntryPoints("AgentSkills/entry-points/entry-point.md"));
87
+ }
88
+ return skills;
89
+ }
90
+ export function discoverSkills(packDir) {
91
+ if (existsSync(path.join(packDir, "AgentSkills"))) {
92
+ return discoverAgentSkills(packDir);
93
+ }
94
+ if (existsSync(path.join(packDir, "instructions.md"))) {
95
+ return [
96
+ {
97
+ name: "instructions",
98
+ description: DEFAULT_DESCRIPTIONS.instructions,
99
+ path: "instructions.md",
100
+ dest: "AGENTS.md",
101
+ },
102
+ ...discoverIdeEntryPoints("instructions.md"),
103
+ ];
104
+ }
105
+ throw new Error(`No recognized skills or instructions found in "${packDir}".`);
106
+ }
14
107
  export function readManifest(packDir) {
15
- const manifestPath = path.join(packDir, "manifest.json");
16
- if (!existsSync(manifestPath)) {
17
- throw new Error(`manifest.json not found in pack at "${packDir}". ` +
18
- `This pack may be malformed or out of date.`);
108
+ const localManifestPath = path.join(packDir, "manifest.json");
109
+ const sharedManifestPath = path.join(packDir, "..", "shared", "manifest.json");
110
+ const targetPath = existsSync(localManifestPath)
111
+ ? localManifestPath
112
+ : existsSync(sharedManifestPath) && existsSync(path.join(packDir, "instructions.md"))
113
+ ? sharedManifestPath
114
+ : undefined;
115
+ if (!targetPath) {
116
+ return {
117
+ name: "@pratikpsl/agent-skills",
118
+ version: "0.7.0",
119
+ skills: discoverSkills(packDir),
120
+ };
19
121
  }
20
122
  let raw;
21
123
  try {
22
- raw = readFileSync(manifestPath, "utf8");
23
- // Strip UTF-8 BOM if present.
124
+ raw = readFileSync(targetPath, "utf8");
24
125
  if (raw.charCodeAt(0) === 0xfeff) {
25
126
  raw = raw.slice(1);
26
127
  }
@@ -35,15 +136,11 @@ export function readManifest(packDir) {
35
136
  }
36
137
  catch (err) {
37
138
  const message = err instanceof Error ? err.message : String(err);
38
- throw new Error(`manifest.json at "${manifestPath}" is not valid JSON: ${message}`);
139
+ throw new Error(`manifest.json at "${targetPath}" is not valid JSON: ${message}`);
39
140
  }
40
- validateManifest(manifest, manifestPath);
141
+ validateManifest(manifest, targetPath);
41
142
  return manifest;
42
143
  }
43
- /**
44
- * Throws with a descriptive message if the manifest does not meet the
45
- * required shape.
46
- */
47
144
  function validateManifest(manifest, filePath) {
48
145
  if (typeof manifest !== "object" || manifest === null) {
49
146
  throw new Error(`manifest.json at "${filePath}" must be a JSON object.`);
@@ -65,7 +162,6 @@ function validateManifest(manifest, filePath) {
65
162
  throw new Error(`manifest.json skills[${i}] is missing or has an empty "${field}" field.`);
66
163
  }
67
164
  }
68
- // dest is optional; when present it must be a non-empty string.
69
165
  if ("dest" in entry &&
70
166
  (typeof entry.dest !== "string" || !entry.dest.trim())) {
71
167
  throw new Error(`manifest.json skills[${i}] has an invalid "dest" field — must be a non-empty string when present.`);
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-pack.d.ts","sourceRoot":"","sources":["../../src/core/resolve-pack.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6BpD"}
1
+ {"version":3,"file":"resolve-pack.d.ts","sourceRoot":"","sources":["../../src/core/resolve-pack.ts"],"names":[],"mappings":"AAuCA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA+BpD"}
@@ -13,6 +13,25 @@ const PACK_ALIASES = {
13
13
  dotnet: "dotnet",
14
14
  "skills-dotnet": "dotnet",
15
15
  "@pratikpsl/agent-skills-dotnet": "dotnet",
16
+ default: "default",
17
+ instructions: "default",
18
+ "skills-instructions": "default",
19
+ "@pratikpsl/agent-skills": "default",
20
+ "@pratikpsl/agent-skills-default": "default",
21
+ "@pratikpsl/agent-skills-instructions": "default",
22
+ "single-file": "default",
23
+ universal: "default",
24
+ "skills-universal": "default",
25
+ "@pratikpsl/agent-skills-universal": "default",
26
+ core: "default",
27
+ "skills-core": "default",
28
+ "@pratikpsl/agent-skills-core": "default",
29
+ standard: "default",
30
+ "skills-standard": "default",
31
+ "@pratikpsl/agent-skills-standard": "default",
32
+ base: "default",
33
+ "skills-base": "default",
34
+ "@pratikpsl/agent-skills-base": "default",
16
35
  };
17
36
  /**
18
37
  * Resolves a pack name or alias to its installed directory.
@@ -29,10 +48,12 @@ export function resolvePack(packName) {
29
48
  // the compiled dist/, so three levels is correct.
30
49
  const templateDir = path.resolve(__dirname, "..", "..", "templates", normalized);
31
50
  if (existsSync(templateDir) &&
32
- existsSync(path.join(templateDir, "manifest.json"))) {
51
+ (existsSync(path.join(templateDir, "manifest.json")) ||
52
+ existsSync(path.join(templateDir, "AgentSkills")) ||
53
+ existsSync(path.join(templateDir, "instructions.md")))) {
33
54
  return templateDir;
34
55
  }
35
56
  throw new Error(`Pack "${packName}" (mapped to "${normalized}") is not bundled with this version of the CLI. ` +
36
- `Currently available packs: dotnet`);
57
+ `Currently available packs: default, dotnet`);
37
58
  }
38
59
  //# sourceMappingURL=resolve-pack.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-pack.js","sourceRoot":"","sources":["../../src/core/resolve-pack.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,gEAAgE;AAChE,yEAAyE;AACzE,EAAE;AACF,yEAAyE;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,oDAAoD;AACpD,MAAM,YAAY,GAA2B;IAC3C,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,QAAQ;IACzB,gCAAgC,EAAE,QAAQ;CAC3C,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,UAAU,GACd,YAAY,CAAC,QAAQ,CAAC;QACtB,QAAQ;aACL,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;aACzC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAE7B,yEAAyE;IACzE,0EAA0E;IAC1E,kDAAkD;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAC9B,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,UAAU,CACX,CAAC;IAEF,IACE,UAAU,CAAC,WAAW,CAAC;QACvB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,EACnD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,iBAAiB,UAAU,kDAAkD;QAC5F,mCAAmC,CACtC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"resolve-pack.js","sourceRoot":"","sources":["../../src/core/resolve-pack.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,gEAAgE;AAChE,yEAAyE;AACzE,EAAE;AACF,yEAAyE;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,oDAAoD;AACpD,MAAM,YAAY,GAA2B;IAC3C,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,QAAQ;IACzB,gCAAgC,EAAE,QAAQ;IAC1C,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,SAAS;IACvB,qBAAqB,EAAE,SAAS;IAChC,yBAAyB,EAAE,SAAS;IACpC,iCAAiC,EAAE,SAAS;IAC5C,sCAAsC,EAAE,SAAS;IACjD,aAAa,EAAE,SAAS;IACxB,SAAS,EAAE,SAAS;IACpB,kBAAkB,EAAE,SAAS;IAC7B,mCAAmC,EAAE,SAAS;IAC9C,IAAI,EAAE,SAAS;IACf,aAAa,EAAE,SAAS;IACxB,8BAA8B,EAAE,SAAS;IACzC,QAAQ,EAAE,SAAS;IACnB,iBAAiB,EAAE,SAAS;IAC5B,kCAAkC,EAAE,SAAS;IAC7C,IAAI,EAAE,SAAS;IACf,aAAa,EAAE,SAAS;IACxB,8BAA8B,EAAE,SAAS;CAC1C,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,UAAU,GACd,YAAY,CAAC,QAAQ,CAAC;QACtB,QAAQ;aACL,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;aACzC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAE7B,yEAAyE;IACzE,0EAA0E;IAC1E,kDAAkD;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAC9B,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,UAAU,CACX,CAAC;IAEF,IACE,UAAU,CAAC,WAAW,CAAC;QACvB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAClD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YACjD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACxD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,iBAAiB,UAAU,kDAAkD;QAC5F,4CAA4C,CAC/C,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@pratikpsl/agent-skills",
3
3
  "type": "module",
4
- "version": "0.5.0",
5
- "description": "CLI to scaffold and manage AI agent skills across projects",
4
+ "version": "0.7.0",
5
+ "description": "CLI to scaffold and manage AI agent skills across projects — like shadcn/ui, but for Cursor, Claude, Codex, Copilot, and more",
6
6
  "bin": {
7
7
  "agent-skills": "dist/bin/agent-skills.js"
8
8
  },
@@ -15,10 +15,28 @@
15
15
  "engines": {
16
16
  "node": ">=18"
17
17
  },
18
+ "keywords": [
19
+ "ai",
20
+ "agent-skills",
21
+ "cursor",
22
+ "claude",
23
+ "cli",
24
+ "scaffold",
25
+ "copilot",
26
+ "codex",
27
+ "dotnet",
28
+ "agents",
29
+ "antigravity",
30
+ "typescript"
31
+ ],
32
+ "homepage": "https://github.com/pratiksinghlad/coding-skills-ai#readme",
33
+ "bugs": {
34
+ "url": "https://github.com/pratiksinghlad/coding-skills-ai/issues"
35
+ },
18
36
  "publishConfig": {
19
37
  "access": "public"
20
38
  },
21
- "license": "MIT",
39
+ "license": "Apache-2.0",
22
40
  "repository": {
23
41
  "type": "git",
24
42
  "url": "git+https://github.com/pratiksinghlad/coding-skills-ai.git"
@@ -30,11 +48,11 @@
30
48
  "dry-run": "npm run build && npm publish --dry-run"
31
49
  },
32
50
  "dependencies": {
33
- "commander": "^12.0.0"
51
+ "commander": "^15.0.0"
34
52
  },
35
53
  "devDependencies": {
36
- "@types/node": "^22.15.33",
37
- "typescript": "^5.8.3",
38
- "vitest": "^3.0.0"
54
+ "@types/node": "^26.4.0",
55
+ "typescript": "^7.0.2",
56
+ "vitest": "^4.1.11"
39
57
  }
40
58
  }
@@ -0,0 +1,34 @@
1
+ # Agent Instructions
2
+
3
+ ## Goal
4
+ Implement the requested change with production-quality code, preserving existing behavior and
5
+ minimizing the diff, following the project's own architecture and conventions - unless explicitly
6
+ told otherwise.
7
+
8
+ ## Principles
9
+ - Match existing code style, patterns, naming, architecture, and folder structure.
10
+ - Prefer simple, clean, clear, efficient, maintainable, manageable code over clever or complex solutions.
11
+ - Make the smallest change that satisfies the request; don't touch unrelated code.
12
+ - Favor deletion over addition - don't grow the codebase for changes that don't need it.
13
+ - Reuse existing utilities/helpers/components before writing new ones.
14
+ - No new dependencies unless necessary. If one is needed: popular, actively maintained,
15
+ permissively licensed (MIT/Apache-2.0), no known security issues.
16
+ - Apply SOLID, DRY, KISS. Single-responsibility functions/classes, Separation of concern. No duplicated logic.
17
+ - No magic numbers/strings - use named constants/enums.
18
+ - Each function must be a maximum of 50 lines.
19
+ - Use meaningful names for classes, methods, variables, and all other code.
20
+ - Handle errors the way the codebase already does.
21
+ - Never hardcode secrets, keys, or credentials; follow the project's existing security practices.
22
+ - Use idiomatic async/non-blocking I/O and ensure the code is free of race conditions and deadlocks.
23
+ - Avoid deprecated APIs and patterns.
24
+ - Comment only where intent isn't obvious from the code itself.
25
+ - Don't change public APIs/interfaces, formatting, or file layout unless the task requires it.
26
+ - Don't add features, abstractions, or "improvements" that weren't asked for.
27
+ - If a requirement is ambiguous or missing critical detail, ask before guessing.
28
+
29
+ ## Definition of Done
30
+ - Builds and runs without errors.
31
+ - No debug code, dead code, unused imports, or temp files left behind.
32
+ - Tests pass; add/update tests for the change if the project has a test suite.
33
+ - The change is minimal, focused, and easy to review.
34
+
@@ -1,6 +1,4 @@
1
- # Copilot Entry Point
2
-
3
- This file is a lightweight entry point for GitHub Copilot.
1
+ # Agent Entry Point
4
2
 
5
3
  `AgentSkills/` is the single source of truth for skills, agents, memory,
6
4
  prerequisites, checklists, and project rules used by all coding agents and
@@ -48,3 +46,4 @@ Before marking any code-changing task complete:
48
46
 
49
47
  3. Do not claim completion when required checks fail. List failures clearly and
50
48
  leave the work in a reviewable state.
49
+
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@pratikpsl/agent-skills",
3
+ "version": "0.7.0",
4
+ "description": "Universal single-file AI agent instructions for all programming languages, OSes, and IDEs (Cursor, Claude, Copilot, Codex, Antigravity, Windsurf, Cline, Aider).",
5
+ "skills": [
6
+ {
7
+ "name": "instructions",
8
+ "description": "Canonical single-file coding agent instructions (Goal, Principles, Definition of Done).",
9
+ "path": "instructions.md",
10
+ "dest": "AGENTS.md"
11
+ },
12
+ {
13
+ "name": "entry-point:codex",
14
+ "description": "Universal Codex/OpenAI agent entry point.",
15
+ "path": "instructions.md",
16
+ "dest": "AGENTS.md"
17
+ },
18
+ {
19
+ "name": "entry-point:claude",
20
+ "description": "Claude Code / Anthropic entry point.",
21
+ "path": "instructions.md",
22
+ "dest": "CLAUDE.md"
23
+ },
24
+ {
25
+ "name": "entry-point:copilot",
26
+ "description": "GitHub Copilot custom instructions entry point.",
27
+ "path": "instructions.md",
28
+ "dest": ".github/copilot-instructions.md"
29
+ },
30
+ {
31
+ "name": "entry-point:cursor",
32
+ "description": "Cursor IDE project rules entry point.",
33
+ "path": "instructions.md",
34
+ "dest": ".cursor/rules/instructions.md"
35
+ },
36
+ {
37
+ "name": "entry-point:antigravity",
38
+ "description": "Antigravity (Google DeepMind) / Gemini rules entry point.",
39
+ "path": "instructions.md",
40
+ "dest": ".agents/GEMINI.md"
41
+ },
42
+ {
43
+ "name": "entry-point:windsurf",
44
+ "description": "Windsurf / Codeium rules entry point.",
45
+ "path": "instructions.md",
46
+ "dest": ".windsurfrules"
47
+ },
48
+ {
49
+ "name": "entry-point:cline",
50
+ "description": "Cline / Roo Code rules entry point.",
51
+ "path": "instructions.md",
52
+ "dest": ".clinerules"
53
+ },
54
+ {
55
+ "name": "entry-point:aider",
56
+ "description": "Aider conventions entry point.",
57
+ "path": "instructions.md",
58
+ "dest": "CONVENTIONS.md"
59
+ }
60
+ ]
61
+ }
62
+
@@ -1,50 +0,0 @@
1
- # Codex / OpenAI Entry Point
2
-
3
- This file is a lightweight entry point for Codex and OpenAI agents.
4
-
5
- `AgentSkills/` is the single source of truth for skills, agents, memory,
6
- prerequisites, checklists, and project rules used by all coding agents and
7
- AI-enabled IDEs in this repository.
8
-
9
- ## Start Here
10
-
11
- 1. Read `AgentSkills/OPERATING.md`.
12
- 2. Follow skill routing in `AgentSkills/skills/INDEX.md`.
13
- 3. Load role definitions from `AgentSkills/agents/` only when the task requires them.
14
-
15
- Do not duplicate canonical instructions in this file. Edit shared guidance in
16
- `AgentSkills/`.
17
-
18
- ## Mandatory Bootstrap (All Agents — Enforced)
19
-
20
- Before changing any file or producing a final answer for any **code-changing**
21
- task in this repository, you MUST complete the following bootstrap sequence
22
- in order. Do NOT skip this sequence even for tasks that appear simple or quick.
23
-
24
- 1. Read `AgentSkills/OPERATING.md`.
25
- 2. Read `AgentSkills/memory/index.md`; load only the domain lesson file(s)
26
- relevant to the current task (do not load all files at once).
27
- 3. Read `AgentSkills/skills/INDEX.md` (when it exists).
28
- 4. Always load `AgentSkills/skills/core/SKILL.md`.
29
- 5. Load any task-specific skill from `AgentSkills/skills/` that matches the task.
30
- 6. For .NET / C# implementation tasks, load `AgentSkills/agents/developer.agent.md`.
31
- 7. For design, CQRS structure, SQL schema, or architecture tasks, load
32
- `AgentSkills/agents/architect.agent.md`.
33
- 8. Inspect the worktree context before editing so existing user changes are
34
- preserved.
35
- 9. Define the verification path for the task before making changes.
36
-
37
- ## Completion Gate (All Agents — Enforced)
38
-
39
- Before marking any code-changing task complete:
40
-
41
- 1. Run the pre-submit checklist in `AgentSkills/skills/core/SKILL.md`.
42
- 2. Run the harness validator (unless the task is documentation-only or the
43
- environment cannot run it — in that case, state the reason explicitly):
44
-
45
- ```powershell
46
- pwsh ./tools/Harness/validate.ps1
47
- ```
48
-
49
- 3. Do not claim completion when required checks fail. List failures clearly and
50
- leave the work in a reviewable state.
@@ -1,50 +0,0 @@
1
- # Claude Entry Point
2
-
3
- This file is a lightweight entry point for Claude (Anthropic).
4
-
5
- `AgentSkills/` is the single source of truth for skills, agents, memory,
6
- prerequisites, checklists, and project rules used by all coding agents and
7
- AI-enabled IDEs in this repository.
8
-
9
- ## Start Here
10
-
11
- 1. Read `AgentSkills/OPERATING.md`.
12
- 2. Follow skill routing in `AgentSkills/skills/INDEX.md`.
13
- 3. Load role definitions from `AgentSkills/agents/` only when the task requires them.
14
-
15
- Do not duplicate canonical instructions in this file. Edit shared guidance in
16
- `AgentSkills/`.
17
-
18
- ## Mandatory Bootstrap (All Agents — Enforced)
19
-
20
- Before changing any file or producing a final answer for any **code-changing**
21
- task in this repository, you MUST complete the following bootstrap sequence
22
- in order. Do NOT skip this sequence even for tasks that appear simple or quick.
23
-
24
- 1. Read `AgentSkills/OPERATING.md`.
25
- 2. Read `AgentSkills/memory/index.md`; load only the domain lesson file(s)
26
- relevant to the current task (do not load all files at once).
27
- 3. Read `AgentSkills/skills/INDEX.md` (when it exists).
28
- 4. Always load `AgentSkills/skills/core/SKILL.md`.
29
- 5. Load any task-specific skill from `AgentSkills/skills/` that matches the task.
30
- 6. For .NET / C# implementation tasks, load `AgentSkills/agents/developer.agent.md`.
31
- 7. For design, CQRS structure, SQL schema, or architecture tasks, load
32
- `AgentSkills/agents/architect.agent.md`.
33
- 8. Inspect the worktree context before editing so existing user changes are
34
- preserved.
35
- 9. Define the verification path for the task before making changes.
36
-
37
- ## Completion Gate (All Agents — Enforced)
38
-
39
- Before marking any code-changing task complete:
40
-
41
- 1. Run the pre-submit checklist in `AgentSkills/skills/core/SKILL.md`.
42
- 2. Run the harness validator (unless the task is documentation-only or the
43
- environment cannot run it — in that case, state the reason explicitly):
44
-
45
- ```powershell
46
- pwsh ./tools/Harness/validate.ps1
47
- ```
48
-
49
- 3. Do not claim completion when required checks fail. List failures clearly and
50
- leave the work in a reviewable state.