@pratikpsl/agent-skills 0.6.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.
- package/README.md +41 -17
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +2 -0
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/dotnet-setup.d.ts +2 -11
- package/dist/cli/commands/dotnet-setup.d.ts.map +1 -1
- package/dist/cli/commands/dotnet-setup.js +5 -32
- package/dist/cli/commands/dotnet-setup.js.map +1 -1
- package/dist/cli/commands/list.js +1 -1
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +9 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +77 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/index.js +16 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/core/copy-skills.d.ts +3 -1
- package/dist/core/copy-skills.d.ts.map +1 -1
- package/dist/core/copy-skills.js +35 -11
- package/dist/core/copy-skills.js.map +1 -1
- package/dist/core/ide-map.d.ts +10 -0
- package/dist/core/ide-map.d.ts.map +1 -0
- package/dist/core/ide-map.js +37 -0
- package/dist/core/ide-map.js.map +1 -0
- package/dist/core/manifest.d.ts +2 -10
- package/dist/core/manifest.d.ts.map +1 -1
- package/dist/core/manifest.js +120 -24
- package/dist/core/manifest.js.map +1 -1
- package/dist/core/resolve-pack.d.ts.map +1 -1
- package/dist/core/resolve-pack.js +23 -2
- package/dist/core/resolve-pack.js.map +1 -1
- package/package.json +8 -6
- package/templates/default/instructions.md +34 -0
- package/templates/dotnet/AgentSkills/entry-points/{copilot-instructions.md → entry-point.md} +2 -3
- package/templates/shared/manifest.json +62 -0
- package/templates/dotnet/AgentSkills/entry-points/AGENTS.md +0 -50
- package/templates/dotnet/AgentSkills/entry-points/CLAUDE.md +0 -50
- package/templates/dotnet/AgentSkills/entry-points/antigravity-instructions.md +0 -50
- package/templates/dotnet/AgentSkills/entry-points/cursor-instructions.md +0 -50
- package/templates/dotnet/manifest.json +0 -92
package/dist/core/manifest.js
CHANGED
|
@@ -1,26 +1,127 @@
|
|
|
1
1
|
// src/core/manifest.ts
|
|
2
|
-
// Reads and validates a pack's manifest.json
|
|
3
|
-
//
|
|
4
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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(
|
|
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 "${
|
|
139
|
+
throw new Error(`manifest.json at "${targetPath}" is not valid JSON: ${message}`);
|
|
39
140
|
}
|
|
40
|
-
validateManifest(manifest,
|
|
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":"AAAA,uBAAuB;AACvB,
|
|
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":"
|
|
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,
|
|
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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pratikpsl/agent-skills",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.7.0",
|
|
5
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"
|
|
@@ -25,7 +25,9 @@
|
|
|
25
25
|
"copilot",
|
|
26
26
|
"codex",
|
|
27
27
|
"dotnet",
|
|
28
|
-
"agents"
|
|
28
|
+
"agents",
|
|
29
|
+
"antigravity",
|
|
30
|
+
"typescript"
|
|
29
31
|
],
|
|
30
32
|
"homepage": "https://github.com/pratiksinghlad/coding-skills-ai#readme",
|
|
31
33
|
"bugs": {
|
|
@@ -46,11 +48,11 @@
|
|
|
46
48
|
"dry-run": "npm run build && npm publish --dry-run"
|
|
47
49
|
},
|
|
48
50
|
"dependencies": {
|
|
49
|
-
"commander": "^
|
|
51
|
+
"commander": "^15.0.0"
|
|
50
52
|
},
|
|
51
53
|
"devDependencies": {
|
|
52
|
-
"@types/node": "^
|
|
53
|
-
"typescript": "^
|
|
54
|
-
"vitest": "^
|
|
54
|
+
"@types/node": "^26.4.0",
|
|
55
|
+
"typescript": "^7.0.2",
|
|
56
|
+
"vitest": "^4.1.11"
|
|
55
57
|
}
|
|
56
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
|
+
|
package/templates/dotnet/AgentSkills/entry-points/{copilot-instructions.md → entry-point.md}
RENAMED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
#
|
|
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.
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# Antigravity Entry Point
|
|
2
|
-
|
|
3
|
-
This file is a lightweight entry point for the Antigravity IDE (Google DeepMind).
|
|
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
|
-
# Cursor / Antigravity Entry Point
|
|
2
|
-
|
|
3
|
-
This file is a lightweight entry point for Cursor and Antigravity IDEs.
|
|
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.
|