prpm 1.1.8 → 1.1.9
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/dist/index.js +104 -64
- package/dist/schemas/agents-md.schema.json +1 -1
- package/dist/schemas/claude-agent.schema.json +1 -1
- package/dist/schemas/claude-hook.schema.json +1 -1
- package/dist/schemas/claude-skill.schema.json +1 -1
- package/dist/schemas/claude-slash-command.schema.json +1 -1
- package/dist/schemas/claude.schema.json +1 -1
- package/dist/schemas/continue.schema.json +1 -1
- package/dist/schemas/copilot.schema.json +1 -1
- package/dist/schemas/cursor-command.schema.json +1 -1
- package/dist/schemas/cursor.schema.json +1 -1
- package/dist/schemas/droid-hook.schema.json +1 -1
- package/dist/schemas/droid-skill.schema.json +1 -1
- package/dist/schemas/droid-slash-command.schema.json +1 -1
- package/dist/schemas/droid.schema.json +1 -1
- package/dist/schemas/gemini-md.schema.json +1 -1
- package/dist/schemas/gemini.schema.json +1 -1
- package/dist/schemas/kiro-agent.schema.json +1 -1
- package/dist/schemas/kiro-hook.schema.json +1 -1
- package/dist/schemas/kiro-steering.schema.json +1 -1
- package/dist/schemas/opencode-slash-command.schema.json +1 -1
- package/dist/schemas/opencode.schema.json +1 -1
- package/dist/schemas/ruler.schema.json +1 -1
- package/dist/schemas/windsurf.schema.json +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -11298,6 +11298,45 @@ var init_to_droid = __esm({
|
|
|
11298
11298
|
}
|
|
11299
11299
|
});
|
|
11300
11300
|
|
|
11301
|
+
// ../converters/dist/schema-files.js
|
|
11302
|
+
var import_module, import_path9, schemaRequire, convertersPackagePath, convertersDir, loadSchema2, agentsMdSchema, canonicalSchema, claudeSchema, continueSchema, copilotSchema, cursorSchema, droidSchema, geminiMdSchema, geminiSchema, kiroSteeringSchema, opencodeSchema, rulerSchema, windsurfSchema, claudeAgentSchema, claudeHookSchema, claudeSkillSchema, claudeSlashCommandSchema, cursorCommandSchema, droidHookSchema, droidSkillSchema, droidSlashCommandSchema, kiroAgentSchema, kiroHookSchema, opencodeSlashCommandSchema;
|
|
11303
|
+
var init_schema_files = __esm({
|
|
11304
|
+
"../converters/dist/schema-files.js"() {
|
|
11305
|
+
"use strict";
|
|
11306
|
+
init_cjs_shims();
|
|
11307
|
+
import_module = require("module");
|
|
11308
|
+
import_path9 = require("path");
|
|
11309
|
+
schemaRequire = typeof require !== "undefined" ? require : (0, import_module.createRequire)(process.cwd() + "/");
|
|
11310
|
+
convertersPackagePath = schemaRequire.resolve("@pr-pm/converters/package.json");
|
|
11311
|
+
convertersDir = (0, import_path9.dirname)(convertersPackagePath);
|
|
11312
|
+
loadSchema2 = (filename) => schemaRequire((0, import_path9.join)(convertersDir, "schemas", filename));
|
|
11313
|
+
agentsMdSchema = loadSchema2("agents-md.schema.json");
|
|
11314
|
+
canonicalSchema = loadSchema2("canonical.schema.json");
|
|
11315
|
+
claudeSchema = loadSchema2("claude.schema.json");
|
|
11316
|
+
continueSchema = loadSchema2("continue.schema.json");
|
|
11317
|
+
copilotSchema = loadSchema2("copilot.schema.json");
|
|
11318
|
+
cursorSchema = loadSchema2("cursor.schema.json");
|
|
11319
|
+
droidSchema = loadSchema2("droid.schema.json");
|
|
11320
|
+
geminiMdSchema = loadSchema2("gemini-md.schema.json");
|
|
11321
|
+
geminiSchema = loadSchema2("gemini.schema.json");
|
|
11322
|
+
kiroSteeringSchema = loadSchema2("kiro-steering.schema.json");
|
|
11323
|
+
opencodeSchema = loadSchema2("opencode.schema.json");
|
|
11324
|
+
rulerSchema = loadSchema2("ruler.schema.json");
|
|
11325
|
+
windsurfSchema = loadSchema2("windsurf.schema.json");
|
|
11326
|
+
claudeAgentSchema = loadSchema2("claude-agent.schema.json");
|
|
11327
|
+
claudeHookSchema = loadSchema2("claude-hook.schema.json");
|
|
11328
|
+
claudeSkillSchema = loadSchema2("claude-skill.schema.json");
|
|
11329
|
+
claudeSlashCommandSchema = loadSchema2("claude-slash-command.schema.json");
|
|
11330
|
+
cursorCommandSchema = loadSchema2("cursor-command.schema.json");
|
|
11331
|
+
droidHookSchema = loadSchema2("droid-hook.schema.json");
|
|
11332
|
+
droidSkillSchema = loadSchema2("droid-skill.schema.json");
|
|
11333
|
+
droidSlashCommandSchema = loadSchema2("droid-slash-command.schema.json");
|
|
11334
|
+
kiroAgentSchema = loadSchema2("kiro-agent.schema.json");
|
|
11335
|
+
kiroHookSchema = loadSchema2("kiro-hook.schema.json");
|
|
11336
|
+
opencodeSlashCommandSchema = loadSchema2("opencode-slash-command.schema.json");
|
|
11337
|
+
}
|
|
11338
|
+
});
|
|
11339
|
+
|
|
11301
11340
|
// ../converters/dist/index.js
|
|
11302
11341
|
var init_dist = __esm({
|
|
11303
11342
|
"../converters/dist/index.js"() {
|
|
@@ -11330,6 +11369,7 @@ var init_dist = __esm({
|
|
|
11330
11369
|
init_to_droid();
|
|
11331
11370
|
init_taxonomy_utils();
|
|
11332
11371
|
init_validation();
|
|
11372
|
+
init_schema_files();
|
|
11333
11373
|
}
|
|
11334
11374
|
});
|
|
11335
11375
|
|
|
@@ -11684,7 +11724,7 @@ async function handleInstall(packageSpec, options) {
|
|
|
11684
11724
|
destDir = getDestinationDir2(effectiveFormat, effectiveSubtype, pkg.name);
|
|
11685
11725
|
if (locationOverride && effectiveFormat === "cursor") {
|
|
11686
11726
|
const relativeDestDir = destDir.startsWith("./") ? destDir.slice(2) : destDir;
|
|
11687
|
-
destDir =
|
|
11727
|
+
destDir = import_path10.default.join(locationOverride, relativeDestDir);
|
|
11688
11728
|
console.log(` \u{1F4C1} Installing Cursor package to custom location: ${destDir}`);
|
|
11689
11729
|
}
|
|
11690
11730
|
let mainFile = extractedFiles[0].content;
|
|
@@ -11705,7 +11745,7 @@ async function handleInstall(packageSpec, options) {
|
|
|
11705
11745
|
const manifestFilename = getManifestFilename(effectiveFormat);
|
|
11706
11746
|
let targetPath = manifestFilename;
|
|
11707
11747
|
if (locationOverride) {
|
|
11708
|
-
targetPath =
|
|
11748
|
+
targetPath = import_path10.default.join(locationOverride, `${manifestFilename.replace(".md", ".override.md")}`);
|
|
11709
11749
|
console.log(` \u{1F4C1} Installing to custom location: ${targetPath}`);
|
|
11710
11750
|
}
|
|
11711
11751
|
destPath = targetPath;
|
|
@@ -11806,7 +11846,7 @@ async function handleInstall(packageSpec, options) {
|
|
|
11806
11846
|
destDir = getDestinationDir2(effectiveFormat, effectiveSubtype, pkg.name);
|
|
11807
11847
|
if (locationOverride && effectiveFormat === "cursor") {
|
|
11808
11848
|
const relativeDestDir = destDir.startsWith("./") ? destDir.slice(2) : destDir;
|
|
11809
|
-
destDir =
|
|
11849
|
+
destDir = import_path10.default.join(locationOverride, relativeDestDir);
|
|
11810
11850
|
console.log(` \u{1F4C1} Installing Cursor package to custom location: ${destDir}`);
|
|
11811
11851
|
}
|
|
11812
11852
|
const packageName = stripAuthorNamespace2(packageId);
|
|
@@ -11995,7 +12035,7 @@ async function extractTarball(tarball, packageId) {
|
|
|
11995
12035
|
} catch (error) {
|
|
11996
12036
|
throw new CLIError(`Package decompression failed: ${error.message}`);
|
|
11997
12037
|
}
|
|
11998
|
-
const tmpDir = await import_promises2.default.mkdtemp(
|
|
12038
|
+
const tmpDir = await import_promises2.default.mkdtemp(import_path10.default.join(import_os3.default.tmpdir(), "prpm-"));
|
|
11999
12039
|
const cleanup = async () => {
|
|
12000
12040
|
try {
|
|
12001
12041
|
await import_promises2.default.rm(tmpDir, { recursive: true, force: true });
|
|
@@ -12043,7 +12083,7 @@ async function collectExtractedFiles(rootDir, excludedNames, fs12) {
|
|
|
12043
12083
|
if (!currentDir) continue;
|
|
12044
12084
|
const entries = await fs12.readdir(currentDir, { withFileTypes: true });
|
|
12045
12085
|
for (const entry of entries) {
|
|
12046
|
-
const fullPath =
|
|
12086
|
+
const fullPath = import_path10.default.join(currentDir, entry.name);
|
|
12047
12087
|
if (entry.isDirectory()) {
|
|
12048
12088
|
dirs.push(fullPath);
|
|
12049
12089
|
continue;
|
|
@@ -12055,7 +12095,7 @@ async function collectExtractedFiles(rootDir, excludedNames, fs12) {
|
|
|
12055
12095
|
continue;
|
|
12056
12096
|
}
|
|
12057
12097
|
const content = await fs12.readFile(fullPath, "utf-8");
|
|
12058
|
-
const relativePath =
|
|
12098
|
+
const relativePath = import_path10.default.relative(rootDir, fullPath).split(import_path10.default.sep).join("/");
|
|
12059
12099
|
files.push({
|
|
12060
12100
|
name: relativePath,
|
|
12061
12101
|
content
|
|
@@ -12087,11 +12127,11 @@ async function installFromLockfile(options) {
|
|
|
12087
12127
|
console.log(` Installing ${packageId}...`);
|
|
12088
12128
|
let locationOverride = options.location;
|
|
12089
12129
|
if (!locationOverride && lockEntry.format === "agents.md" && lockEntry.installedPath) {
|
|
12090
|
-
const baseName =
|
|
12130
|
+
const baseName = import_path10.default.basename(lockEntry.installedPath);
|
|
12091
12131
|
if (baseName === "AGENTS.override.md") {
|
|
12092
|
-
locationOverride =
|
|
12132
|
+
locationOverride = import_path10.default.dirname(lockEntry.installedPath);
|
|
12093
12133
|
} else if (baseName !== "AGENTS.md") {
|
|
12094
|
-
locationOverride =
|
|
12134
|
+
locationOverride = import_path10.default.dirname(lockEntry.installedPath);
|
|
12095
12135
|
}
|
|
12096
12136
|
}
|
|
12097
12137
|
const manifestFile = (_a = lockEntry.progressiveDisclosure) == null ? void 0 : _a.manifestPath;
|
|
@@ -12160,7 +12200,7 @@ function createInstallCommand() {
|
|
|
12160
12200
|
});
|
|
12161
12201
|
return command;
|
|
12162
12202
|
}
|
|
12163
|
-
var import_commander11, import_chalk, import_registry_client5, import_stream, import_promises, tar,
|
|
12203
|
+
var import_commander11, import_chalk, import_registry_client5, import_stream, import_promises, tar, import_path10, import_zlib, import_promises2, import_os3;
|
|
12164
12204
|
var init_install = __esm({
|
|
12165
12205
|
"src/commands/install.ts"() {
|
|
12166
12206
|
"use strict";
|
|
@@ -12176,7 +12216,7 @@ var init_install = __esm({
|
|
|
12176
12216
|
tar = __toESM(require("tar"));
|
|
12177
12217
|
init_errors();
|
|
12178
12218
|
init_prompts();
|
|
12179
|
-
|
|
12219
|
+
import_path10 = __toESM(require("path"));
|
|
12180
12220
|
import_zlib = __toESM(require("zlib"));
|
|
12181
12221
|
import_promises2 = __toESM(require("fs/promises"));
|
|
12182
12222
|
import_os3 = __toESM(require("os"));
|
|
@@ -12193,7 +12233,7 @@ var init_install = __esm({
|
|
|
12193
12233
|
init_cjs_shims();
|
|
12194
12234
|
var import_commander29 = require("commander");
|
|
12195
12235
|
var import_fs15 = require("fs");
|
|
12196
|
-
var
|
|
12236
|
+
var import_path19 = require("path");
|
|
12197
12237
|
|
|
12198
12238
|
// src/commands/list.ts
|
|
12199
12239
|
init_cjs_shims();
|
|
@@ -13358,7 +13398,7 @@ init_install();
|
|
|
13358
13398
|
init_cjs_shims();
|
|
13359
13399
|
var import_commander12 = require("commander");
|
|
13360
13400
|
var import_promises6 = require("fs/promises");
|
|
13361
|
-
var
|
|
13401
|
+
var import_path14 = require("path");
|
|
13362
13402
|
var tar2 = __toESM(require("tar"));
|
|
13363
13403
|
var import_os4 = require("os");
|
|
13364
13404
|
var import_crypto2 = require("crypto");
|
|
@@ -13532,13 +13572,13 @@ init_cjs_shims();
|
|
|
13532
13572
|
var import_ajv2 = __toESM(require("ajv"));
|
|
13533
13573
|
var import_ajv_formats2 = __toESM(require("ajv-formats"));
|
|
13534
13574
|
var import_fs10 = require("fs");
|
|
13535
|
-
var
|
|
13575
|
+
var import_path11 = require("path");
|
|
13536
13576
|
var schema2;
|
|
13537
13577
|
var schemaCandidates = [
|
|
13538
13578
|
// Source file layout (src/core → ../../schemas)
|
|
13539
|
-
(0,
|
|
13579
|
+
(0, import_path11.join)(__dirname, "../../schemas/prpm-manifest.schema.json"),
|
|
13540
13580
|
// Bundled layout (dist/index.js → ../schemas)
|
|
13541
|
-
(0,
|
|
13581
|
+
(0, import_path11.join)(__dirname, "../schemas/prpm-manifest.schema.json")
|
|
13542
13582
|
];
|
|
13543
13583
|
for (const candidate of schemaCandidates) {
|
|
13544
13584
|
try {
|
|
@@ -13598,7 +13638,7 @@ function getManifestSchema() {
|
|
|
13598
13638
|
// src/utils/license-extractor.ts
|
|
13599
13639
|
init_cjs_shims();
|
|
13600
13640
|
var import_promises3 = require("fs/promises");
|
|
13601
|
-
var
|
|
13641
|
+
var import_path12 = require("path");
|
|
13602
13642
|
var import_fs11 = require("fs");
|
|
13603
13643
|
var LICENSE_FILE_PATTERNS = [
|
|
13604
13644
|
"LICENSE",
|
|
@@ -13648,7 +13688,7 @@ function generateLicenseUrl(repositoryUrl, fileName) {
|
|
|
13648
13688
|
async function extractLicenseInfo(repositoryUrl) {
|
|
13649
13689
|
const cwd = process.cwd();
|
|
13650
13690
|
for (const fileName of LICENSE_FILE_PATTERNS) {
|
|
13651
|
-
const filePath = (0,
|
|
13691
|
+
const filePath = (0, import_path12.join)(cwd, fileName);
|
|
13652
13692
|
try {
|
|
13653
13693
|
await (0, import_promises3.access)(filePath, import_fs11.constants.R_OK);
|
|
13654
13694
|
const text = await (0, import_promises3.readFile)(filePath, "utf-8");
|
|
@@ -13684,7 +13724,7 @@ function validateLicenseInfo(licenseInfo, packageName) {
|
|
|
13684
13724
|
// src/utils/snippet-extractor.ts
|
|
13685
13725
|
init_cjs_shims();
|
|
13686
13726
|
var import_promises4 = require("fs/promises");
|
|
13687
|
-
var
|
|
13727
|
+
var import_path13 = require("path");
|
|
13688
13728
|
var MAX_SNIPPET_LENGTH = 2e3;
|
|
13689
13729
|
async function extractSnippet(manifest) {
|
|
13690
13730
|
const cwd = process.cwd();
|
|
@@ -13700,7 +13740,7 @@ async function extractSnippet(manifest) {
|
|
|
13700
13740
|
const firstFile = manifest.files[0];
|
|
13701
13741
|
fileName = typeof firstFile === "string" ? firstFile : firstFile.path;
|
|
13702
13742
|
}
|
|
13703
|
-
const fullPath = (0,
|
|
13743
|
+
const fullPath = (0, import_path13.join)(cwd, fileName);
|
|
13704
13744
|
const stats = await (0, import_promises4.stat)(fullPath);
|
|
13705
13745
|
if (stats.isDirectory()) {
|
|
13706
13746
|
console.warn(`\u26A0\uFE0F Skipping snippet extraction: "${fullPath}" is a directory`);
|
|
@@ -13960,7 +14000,7 @@ async function validatePackageFiles(manifest) {
|
|
|
13960
14000
|
|
|
13961
14001
|
// src/commands/publish.ts
|
|
13962
14002
|
async function findAndLoadManifests() {
|
|
13963
|
-
const prpmJsonPath = (0,
|
|
14003
|
+
const prpmJsonPath = (0, import_path14.join)(process.cwd(), "prpm.json");
|
|
13964
14004
|
let prpmJsonExists = false;
|
|
13965
14005
|
let prpmJsonError = null;
|
|
13966
14006
|
try {
|
|
@@ -14012,7 +14052,7 @@ async function findAndLoadManifests() {
|
|
|
14012
14052
|
throw error;
|
|
14013
14053
|
}
|
|
14014
14054
|
}
|
|
14015
|
-
const marketplaceJsonPath = (0,
|
|
14055
|
+
const marketplaceJsonPath = (0, import_path14.join)(process.cwd(), ".claude", "marketplace.json");
|
|
14016
14056
|
try {
|
|
14017
14057
|
const content = await (0, import_promises6.readFile)(marketplaceJsonPath, "utf-8");
|
|
14018
14058
|
const marketplaceData = JSON.parse(content);
|
|
@@ -14028,7 +14068,7 @@ async function findAndLoadManifests() {
|
|
|
14028
14068
|
return { manifests, collections: [], source: ".claude/marketplace.json" };
|
|
14029
14069
|
} catch (error) {
|
|
14030
14070
|
}
|
|
14031
|
-
const marketplaceJsonPluginPath = (0,
|
|
14071
|
+
const marketplaceJsonPluginPath = (0, import_path14.join)(process.cwd(), ".claude-plugin", "marketplace.json");
|
|
14032
14072
|
try {
|
|
14033
14073
|
const content = await (0, import_promises6.readFile)(marketplaceJsonPluginPath, "utf-8");
|
|
14034
14074
|
const marketplaceData = JSON.parse(content);
|
|
@@ -14145,8 +14185,8 @@ function predictScopedPackageName(manifestName, username, organization) {
|
|
|
14145
14185
|
return manifestName;
|
|
14146
14186
|
}
|
|
14147
14187
|
async function createTarball(manifest) {
|
|
14148
|
-
const tmpDir = (0,
|
|
14149
|
-
const tarballPath = (0,
|
|
14188
|
+
const tmpDir = (0, import_path14.join)((0, import_os4.tmpdir)(), `prpm-${(0, import_crypto2.randomBytes)(8).toString("hex")}`);
|
|
14189
|
+
const tarballPath = (0, import_path14.join)(tmpDir, "package.tar.gz");
|
|
14150
14190
|
try {
|
|
14151
14191
|
await (0, import_promises6.mkdir)(tmpDir, { recursive: true });
|
|
14152
14192
|
const filePaths = normalizeFilePaths2(manifest.files);
|
|
@@ -14207,7 +14247,7 @@ async function handlePublish(options) {
|
|
|
14207
14247
|
const { manifests, collections, source } = await findAndLoadManifests();
|
|
14208
14248
|
if (source === "prpm.json (multi-package)" || source === "prpm.json") {
|
|
14209
14249
|
try {
|
|
14210
|
-
const prpmJsonPath = (0,
|
|
14250
|
+
const prpmJsonPath = (0, import_path14.join)(process.cwd(), "prpm.json");
|
|
14211
14251
|
const prpmContent = await (0, import_promises6.readFile)(prpmJsonPath, "utf-8");
|
|
14212
14252
|
const prpmManifest = JSON.parse(prpmContent);
|
|
14213
14253
|
if (prpmManifest.scripts) {
|
|
@@ -14283,7 +14323,7 @@ async function handlePublish(options) {
|
|
|
14283
14323
|
const RETRY_DELAY_MS = options.dryRun || process.env.NODE_ENV === "test" ? 0 : parseInt(process.env.PRPM_RETRY_DELAY_MS || "5000");
|
|
14284
14324
|
const delay = (ms) => new Promise((resolve2) => setTimeout(resolve2, ms));
|
|
14285
14325
|
const isRetriableError = (error2) => {
|
|
14286
|
-
return error2.includes("Service Unavailable") || error2.includes("at capacity") || error2.includes("503") || error2.includes("ECONNRESET") || error2.includes("ETIMEDOUT");
|
|
14326
|
+
return error2.includes("Service Unavailable") || error2.includes("Bad Gateway") || error2.includes("at capacity") || error2.includes("502") || error2.includes("503") || error2.includes("ECONNRESET") || error2.includes("ETIMEDOUT");
|
|
14287
14327
|
};
|
|
14288
14328
|
if (filteredManifests.length > 1 && BATCH_DELAY_MS > 0) {
|
|
14289
14329
|
console.log(`\u{1F4E6} Publishing ${filteredManifests.length} packages in batches of ${BATCH_SIZE}`);
|
|
@@ -15264,7 +15304,7 @@ function createSchemaCommand() {
|
|
|
15264
15304
|
init_cjs_shims();
|
|
15265
15305
|
var import_commander19 = require("commander");
|
|
15266
15306
|
var import_promises7 = require("fs/promises");
|
|
15267
|
-
var
|
|
15307
|
+
var import_path15 = require("path");
|
|
15268
15308
|
var import_fs12 = require("fs");
|
|
15269
15309
|
var readline3 = __toESM(require("readline/promises"));
|
|
15270
15310
|
var import_process = require("process");
|
|
@@ -15632,8 +15672,8 @@ function getDefaultAuthor() {
|
|
|
15632
15672
|
async function createExampleFiles(format, files, packageName) {
|
|
15633
15673
|
const templates = EXAMPLE_TEMPLATES[format] || {};
|
|
15634
15674
|
for (const file of files) {
|
|
15635
|
-
const filePath = (0,
|
|
15636
|
-
const dirPath = (0,
|
|
15675
|
+
const filePath = (0, import_path15.join)(process.cwd(), file);
|
|
15676
|
+
const dirPath = (0, import_path15.join)(filePath, "..");
|
|
15637
15677
|
if (!(0, import_fs12.existsSync)(dirPath)) {
|
|
15638
15678
|
await (0, import_promises7.mkdir)(dirPath, { recursive: true });
|
|
15639
15679
|
}
|
|
@@ -15651,7 +15691,7 @@ Add your content here.
|
|
|
15651
15691
|
}
|
|
15652
15692
|
}
|
|
15653
15693
|
async function createReadme(config) {
|
|
15654
|
-
const readmePath = (0,
|
|
15694
|
+
const readmePath = (0, import_path15.join)(process.cwd(), "README.md");
|
|
15655
15695
|
if ((0, import_fs12.existsSync)(readmePath)) {
|
|
15656
15696
|
console.log(" Skipping README.md (already exists)");
|
|
15657
15697
|
return;
|
|
@@ -15686,7 +15726,7 @@ ${config.license}
|
|
|
15686
15726
|
console.log(" Created README.md");
|
|
15687
15727
|
}
|
|
15688
15728
|
async function initPackage(options) {
|
|
15689
|
-
const manifestPath = (0,
|
|
15729
|
+
const manifestPath = (0, import_path15.join)(process.cwd(), "prpm.json");
|
|
15690
15730
|
if ((0, import_fs12.existsSync)(manifestPath) && !options.force) {
|
|
15691
15731
|
throw new Error(
|
|
15692
15732
|
"prpm.json already exists. Use --force to overwrite, or run this command in a different directory."
|
|
@@ -15986,15 +16026,15 @@ function createConfigCommand() {
|
|
|
15986
16026
|
init_cjs_shims();
|
|
15987
16027
|
var import_commander21 = require("commander");
|
|
15988
16028
|
var import_promises8 = require("fs/promises");
|
|
15989
|
-
var
|
|
16029
|
+
var import_path16 = require("path");
|
|
15990
16030
|
init_telemetry();
|
|
15991
16031
|
init_lockfile();
|
|
15992
16032
|
init_errors();
|
|
15993
16033
|
function detectPackageInfo(filePath, content) {
|
|
15994
|
-
const fileName = (0,
|
|
16034
|
+
const fileName = (0, import_path16.basename)(filePath);
|
|
15995
16035
|
const lowerFileName = fileName.toLowerCase();
|
|
15996
16036
|
if (fileName === "SKILL.md") {
|
|
15997
|
-
const dirName = (0,
|
|
16037
|
+
const dirName = (0, import_path16.basename)((0, import_path16.join)(filePath, ".."));
|
|
15998
16038
|
return {
|
|
15999
16039
|
format: "claude",
|
|
16000
16040
|
subtype: "skill",
|
|
@@ -16046,8 +16086,8 @@ async function scanDirectory2(dirPath, baseDir, scanDir, maxDepth = 5, currentDe
|
|
|
16046
16086
|
try {
|
|
16047
16087
|
const entries = await (0, import_promises8.readdir)(dirPath, { withFileTypes: true });
|
|
16048
16088
|
for (const entry of entries) {
|
|
16049
|
-
const fullPath = (0,
|
|
16050
|
-
const relativePath = (0,
|
|
16089
|
+
const fullPath = (0, import_path16.join)(dirPath, entry.name);
|
|
16090
|
+
const relativePath = (0, import_path16.relative)(baseDir, fullPath);
|
|
16051
16091
|
if (entry.name === "node_modules" || entry.name === ".git" || entry.name === "dist" || entry.name === "build") {
|
|
16052
16092
|
continue;
|
|
16053
16093
|
}
|
|
@@ -16184,7 +16224,7 @@ async function handleCatalog(directories, options) {
|
|
|
16184
16224
|
success = true;
|
|
16185
16225
|
return;
|
|
16186
16226
|
}
|
|
16187
|
-
const prpmJsonPath = options.output || (0,
|
|
16227
|
+
const prpmJsonPath = options.output || (0, import_path16.join)(process.cwd(), "prpm.json");
|
|
16188
16228
|
let manifest;
|
|
16189
16229
|
if (options.append) {
|
|
16190
16230
|
try {
|
|
@@ -16222,7 +16262,7 @@ async function handleCatalog(directories, options) {
|
|
|
16222
16262
|
}
|
|
16223
16263
|
let description = `${discovered.format} ${discovered.subtype}`;
|
|
16224
16264
|
try {
|
|
16225
|
-
const firstFilePath = (0,
|
|
16265
|
+
const firstFilePath = (0, import_path16.join)(process.cwd(), discovered.scanDir, discovered.files[0]);
|
|
16226
16266
|
const content = await (0, import_promises8.readFile)(firstFilePath, "utf-8");
|
|
16227
16267
|
const extractedDesc = extractDescription2(content);
|
|
16228
16268
|
if (extractedDesc) {
|
|
@@ -17473,57 +17513,57 @@ function createStarredCommand() {
|
|
|
17473
17513
|
init_cjs_shims();
|
|
17474
17514
|
var import_commander27 = require("commander");
|
|
17475
17515
|
var import_promises9 = require("fs/promises");
|
|
17476
|
-
var
|
|
17516
|
+
var import_path17 = require("path");
|
|
17477
17517
|
var import_fs13 = require("fs");
|
|
17478
17518
|
var import_readline = require("readline");
|
|
17479
17519
|
var import_chalk2 = __toESM(require_source());
|
|
17480
17520
|
init_errors();
|
|
17481
17521
|
init_dist();
|
|
17482
17522
|
function getDefaultPath(format, filename, subtype, customName) {
|
|
17483
|
-
const baseName = customName || (0,
|
|
17523
|
+
const baseName = customName || (0, import_path17.basename)(filename, (0, import_path17.extname)(filename));
|
|
17484
17524
|
switch (format) {
|
|
17485
17525
|
case "cursor":
|
|
17486
17526
|
if (subtype === "slash-command") {
|
|
17487
|
-
return (0,
|
|
17527
|
+
return (0, import_path17.join)(process.cwd(), ".cursor", "commands", `${baseName}.md`);
|
|
17488
17528
|
}
|
|
17489
|
-
return (0,
|
|
17529
|
+
return (0, import_path17.join)(process.cwd(), ".cursor", "rules", `${baseName}.mdc`);
|
|
17490
17530
|
case "claude":
|
|
17491
17531
|
if (subtype === "skill") {
|
|
17492
|
-
return (0,
|
|
17532
|
+
return (0, import_path17.join)(process.cwd(), ".claude", "skills", baseName, "SKILL.md");
|
|
17493
17533
|
} else if (subtype === "slash-command") {
|
|
17494
|
-
return (0,
|
|
17534
|
+
return (0, import_path17.join)(process.cwd(), ".claude", "commands", `${baseName}.md`);
|
|
17495
17535
|
} else {
|
|
17496
|
-
return (0,
|
|
17536
|
+
return (0, import_path17.join)(process.cwd(), ".claude", "agents", `${baseName}.md`);
|
|
17497
17537
|
}
|
|
17498
17538
|
case "windsurf":
|
|
17499
|
-
return (0,
|
|
17539
|
+
return (0, import_path17.join)(process.cwd(), ".windsurf", "rules", `${baseName}.md`);
|
|
17500
17540
|
case "kiro":
|
|
17501
17541
|
if (subtype === "hook") {
|
|
17502
|
-
return (0,
|
|
17542
|
+
return (0, import_path17.join)(process.cwd(), ".kiro", "hooks", `${baseName}.kiro.hook`);
|
|
17503
17543
|
}
|
|
17504
17544
|
if (subtype === "agent") {
|
|
17505
|
-
return (0,
|
|
17545
|
+
return (0, import_path17.join)(process.cwd(), ".kiro", "agents", `${baseName}.json`);
|
|
17506
17546
|
}
|
|
17507
|
-
return (0,
|
|
17547
|
+
return (0, import_path17.join)(process.cwd(), ".kiro", "steering", `${baseName}.md`);
|
|
17508
17548
|
case "copilot":
|
|
17509
|
-
return (0,
|
|
17549
|
+
return (0, import_path17.join)(process.cwd(), ".github", "instructions", `${baseName}.instructions.md`);
|
|
17510
17550
|
case "continue":
|
|
17511
17551
|
if (subtype === "slash-command" || subtype === "prompt") {
|
|
17512
|
-
return (0,
|
|
17552
|
+
return (0, import_path17.join)(process.cwd(), ".continue", "prompts", `${baseName}.md`);
|
|
17513
17553
|
}
|
|
17514
|
-
return (0,
|
|
17554
|
+
return (0, import_path17.join)(process.cwd(), ".continue", "rules", `${baseName}.md`);
|
|
17515
17555
|
case "agents.md":
|
|
17516
|
-
return (0,
|
|
17556
|
+
return (0, import_path17.join)(process.cwd(), "agents.md");
|
|
17517
17557
|
case "gemini":
|
|
17518
|
-
return (0,
|
|
17558
|
+
return (0, import_path17.join)(process.cwd(), ".gemini", "commands", `${baseName}.toml`);
|
|
17519
17559
|
case "ruler":
|
|
17520
|
-
return (0,
|
|
17560
|
+
return (0, import_path17.join)(process.cwd(), ".ruler", `${baseName}.md`);
|
|
17521
17561
|
default:
|
|
17522
17562
|
throw new CLIError(`Unknown format: ${format}`);
|
|
17523
17563
|
}
|
|
17524
17564
|
}
|
|
17525
17565
|
function detectFormat(content, filepath) {
|
|
17526
|
-
const ext = (0,
|
|
17566
|
+
const ext = (0, import_path17.extname)(filepath).toLowerCase();
|
|
17527
17567
|
if (ext === ".mdc" || filepath.includes(".cursor/rules") || filepath.includes(".cursor/commands")) {
|
|
17528
17568
|
return "cursor";
|
|
17529
17569
|
}
|
|
@@ -17545,7 +17585,7 @@ function detectFormat(content, filepath) {
|
|
|
17545
17585
|
if (filepath.includes(".continue/rules") || filepath.includes(".continue/prompts") || filepath.includes(".continuerules")) {
|
|
17546
17586
|
return "continue";
|
|
17547
17587
|
}
|
|
17548
|
-
if ((0,
|
|
17588
|
+
if ((0, import_path17.basename)(filepath) === "agents.md") {
|
|
17549
17589
|
return "agents.md";
|
|
17550
17590
|
}
|
|
17551
17591
|
if (ext === ".toml" || filepath.includes(".gemini/commands")) {
|
|
@@ -17710,7 +17750,7 @@ async function handleConvert(sourcePath, options) {
|
|
|
17710
17750
|
return;
|
|
17711
17751
|
}
|
|
17712
17752
|
}
|
|
17713
|
-
const outputDir = (0,
|
|
17753
|
+
const outputDir = (0, import_path17.dirname)(outputPath);
|
|
17714
17754
|
await (0, import_promises9.mkdir)(outputDir, { recursive: true });
|
|
17715
17755
|
console.log(import_chalk2.default.dim("Writing converted file..."));
|
|
17716
17756
|
await (0, import_promises9.writeFile)(outputPath, result.content, "utf-8");
|
|
@@ -17777,7 +17817,7 @@ Valid subtypes: ${validSubtypes.join(", ")}`
|
|
|
17777
17817
|
init_cjs_shims();
|
|
17778
17818
|
var import_commander28 = require("commander");
|
|
17779
17819
|
var import_fs14 = require("fs");
|
|
17780
|
-
var
|
|
17820
|
+
var import_path18 = require("path");
|
|
17781
17821
|
var import_chalk3 = __toESM(require_source());
|
|
17782
17822
|
init_errors();
|
|
17783
17823
|
init_lockfile();
|
|
@@ -17793,7 +17833,7 @@ async function exportToRuler(options) {
|
|
|
17793
17833
|
}
|
|
17794
17834
|
console.log(import_chalk3.default.green(`\u2713 Found ${packages.length} installed package${packages.length === 1 ? "" : "s"}`));
|
|
17795
17835
|
console.log();
|
|
17796
|
-
const outputDir = options.output || (0,
|
|
17836
|
+
const outputDir = options.output || (0, import_path18.join)(process.cwd(), ".ruler");
|
|
17797
17837
|
let rulerExists = false;
|
|
17798
17838
|
try {
|
|
17799
17839
|
await import_fs14.promises.access(outputDir);
|
|
@@ -17820,7 +17860,7 @@ async function exportToRuler(options) {
|
|
|
17820
17860
|
const content = await import_fs14.promises.readFile(pkg.installedPath, "utf-8");
|
|
17821
17861
|
const rulerContent = createRulerFormat(pkg.id, pkg.version, content, pkg.format, pkg.subtype);
|
|
17822
17862
|
const rulerFilename = `${packageName}.md`;
|
|
17823
|
-
const rulerPath = (0,
|
|
17863
|
+
const rulerPath = (0, import_path18.join)(outputDir, rulerFilename);
|
|
17824
17864
|
await import_fs14.promises.writeFile(rulerPath, rulerContent, "utf-8");
|
|
17825
17865
|
console.log(import_chalk3.default.green(`\u2713 Exported ${pkg.id} \u2192 ${rulerFilename}`));
|
|
17826
17866
|
exportedCount++;
|
|
@@ -17860,7 +17900,7 @@ function createRulerFormat(packageId, version, content, format, subtype) {
|
|
|
17860
17900
|
return frontmatter + contentWithoutFrontmatter;
|
|
17861
17901
|
}
|
|
17862
17902
|
async function ensureRulerConfig(rulerDir) {
|
|
17863
|
-
const configPath = (0,
|
|
17903
|
+
const configPath = (0, import_path18.join)((0, import_path18.dirname)(rulerDir), "ruler.toml");
|
|
17864
17904
|
try {
|
|
17865
17905
|
await import_fs14.promises.access(configPath);
|
|
17866
17906
|
console.log(import_chalk3.default.dim("\u2139 ruler.toml already exists (not modified)"));
|
|
@@ -17958,7 +17998,7 @@ init_telemetry();
|
|
|
17958
17998
|
init_errors();
|
|
17959
17999
|
function getVersion() {
|
|
17960
18000
|
try {
|
|
17961
|
-
const packageJsonPath = (0,
|
|
18001
|
+
const packageJsonPath = (0, import_path19.join)(__dirname, "../package.json");
|
|
17962
18002
|
const packageJson = JSON.parse((0, import_fs15.readFileSync)(packageJsonPath, "utf-8"));
|
|
17963
18003
|
return packageJson.version || "0.0.0";
|
|
17964
18004
|
} catch {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/agents-md.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://docs.factory.ai/cli/configuration/agents-md",
|
|
5
5
|
"title": "agents.md Format",
|
|
6
6
|
"description": "JSON Schema for agents.md format - plain markdown project-specific AI instructions (NO frontmatter)",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/claude/agent.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://code.claude.com/docs/en/sub-agents",
|
|
5
5
|
"title": "Claude Agent Format",
|
|
6
6
|
"description": "JSON Schema for Claude Code Agents - long-running assistants with tool access",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/claude/hook.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://code.claude.com/docs/en/hooks",
|
|
5
5
|
"title": "Claude Hook Format",
|
|
6
6
|
"description": "JSON Schema for Claude Code Hooks - executable code triggered by events. Valid hook events: PreToolUse (blocks the tool call, shows stderr to Claude), PermissionRequest (denies the permission, shows stderr to Claude), PostToolUse (shows stderr to Claude, tool already ran), Notification (shows stderr to user only), UserPromptSubmit (blocks prompt processing, erases prompt, shows stderr to user only), Stop (blocks stoppage, shows stderr to Claude), SubagentStop (blocks stoppage, shows stderr to Claude subagent), PreCompact (shows stderr to user only), SessionStart (shows stderr to user only), SessionEnd (shows stderr to user only)",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/claude/skill.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://code.claude.com/docs/en/skills",
|
|
5
5
|
"title": "Claude Skill Format",
|
|
6
6
|
"description": "JSON Schema for Claude Code Skills - reusable patterns invoked during conversation",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/claude/slash-command.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://code.claude.com/docs/en/slash-commands",
|
|
5
5
|
"title": "Claude Slash Command Format",
|
|
6
6
|
"description": "JSON Schema for Claude Code Slash Commands - quick actions triggered by /command-name",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/claude.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://code.claude.com/docs/en",
|
|
5
5
|
"title": "Claude Code Format",
|
|
6
6
|
"description": "JSON Schema for Claude Code agents, skills, and slash commands format",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/continue.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://docs.continue.dev/customize/deep-dives/rules",
|
|
5
5
|
"title": "Continue Rules Format",
|
|
6
6
|
"description": "JSON Schema for Continue rules format - markdown with optional YAML frontmatter or YAML configuration",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/copilot.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://docs.github.com/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot",
|
|
5
5
|
"title": "GitHub Copilot Instructions Format",
|
|
6
6
|
"description": "JSON Schema for GitHub Copilot instructions (.github/copilot-instructions.md or .github/instructions/*.instructions.md)",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/cursor/command.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://cursor.com/docs/agent/chat/commands#commands",
|
|
5
5
|
"title": "Cursor Command Format",
|
|
6
6
|
"description": "JSON Schema for Cursor commands (slash commands) - plain Markdown files in .cursor/commands/",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/cursor.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://cursor.com/docs/context/rules",
|
|
5
5
|
"title": "Cursor Rules Format",
|
|
6
6
|
"description": "JSON Schema for Cursor .cursor/rules format with MDC (Markdown Components) frontmatter",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/droid/hook.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://docs.factory.ai/cli/configuration/hooks",
|
|
5
5
|
"title": "Factory Droid Hook Format",
|
|
6
6
|
"description": "JSON Schema for Factory Droid Hooks - defined in settings.json files. Valid hook events: PreToolUse (runs before tool calls, can block them), PostToolUse (runs after tool calls complete), UserPromptSubmit (runs when user submits a prompt, before Droid processes it), Notification (runs when Droid sends notifications), Stop (runs when Droid finishes responding), SubagentStop (runs when sub-droid tasks complete), PreCompact (runs before Droid runs a compact operation), SessionStart (runs when Droid starts a new session or resumes an existing session), SessionEnd (runs when Droid session ends)",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/droid/skill.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://docs.factory.ai/cli/configuration/skills",
|
|
5
5
|
"title": "Factory Droid Skill Format",
|
|
6
6
|
"description": "JSON Schema for Factory Droid Skills - SKILL.md files stored in .factory/skills/<skill-name>/",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/droid/slash-command.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://docs.factory.ai/cli/configuration/custom-slash-commands",
|
|
5
5
|
"title": "Factory Droid Slash Command Format",
|
|
6
6
|
"description": "JSON Schema for Factory Droid Slash Commands - markdown files stored in .factory/commands/",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/droid.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://docs.factory.ai/cli/configuration",
|
|
5
5
|
"title": "Factory Droid Format",
|
|
6
6
|
"description": "JSON Schema for Factory Droid Skills, Hooks, and Slash Commands",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/gemini-md.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://geminicli.com/docs/cli/gemini-md/#_top",
|
|
5
5
|
"title": "GEMINI.md Format",
|
|
6
6
|
"description": "JSON Schema for GEMINI.md format - plain markdown project-specific AI instructions (NO frontmatter)",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/gemini.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://geminicli.com/docs/cli/custom-commands/",
|
|
5
5
|
"title": "Gemini Custom Commands Format",
|
|
6
6
|
"description": "JSON Schema for Gemini CLI custom commands - TOML files stored in .gemini/commands/",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/kiro/agent.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://kiro.dev/docs/cli/custom-agents/",
|
|
5
5
|
"title": "Kiro Agent Configuration Format",
|
|
6
6
|
"description": "JSON Schema for Kiro custom agent configurations (.kiro/agents/*.json) - specialized AI assistants with specific tools and context",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/kiro/hook.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://kiro.dev/docs/hooks/",
|
|
5
5
|
"title": "Kiro Hook Format",
|
|
6
6
|
"description": "JSON Schema for Kiro hook configuration files (.kiro/hooks/*.json) - event-driven automations",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/kiro-steering.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://kiro.dev/docs/steering/",
|
|
5
5
|
"title": "Kiro Steering Files Format",
|
|
6
6
|
"description": "JSON Schema for Kiro steering files (.kiro/steering/*.md) - context-aware instructions with optional frontmatter (defaults to 'always' inclusion)",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/opencode/slash-command.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://opencode.ai/docs/slash-commands/",
|
|
5
5
|
"title": "OpenCode Slash Command Format",
|
|
6
6
|
"description": "JSON Schema for OpenCode Slash Commands - markdown files with YAML frontmatter stored in .opencode/command/",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/opencode.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://opencode.ai/docs/agents/",
|
|
5
5
|
"title": "OpenCode Agent Format",
|
|
6
6
|
"description": "JSON Schema for OpenCode Agents - markdown files with YAML frontmatter stored in .opencode/agent/",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/ruler.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://okigu.com/ruler",
|
|
5
5
|
"title": "Ruler Rules Format",
|
|
6
6
|
"description": "JSON Schema for Ruler .ruler/ format - plain markdown without frontmatter, used for AI coding assistant instructions",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://registry.prpm.dev/api/v1/schemas/windsurf.json",
|
|
4
|
-
"$comment": "
|
|
4
|
+
"$comment": "https://docs.windsurf.com/windsurf/cascade/memories#rules",
|
|
5
5
|
"title": "Windsurf Rules Format",
|
|
6
6
|
"description": "JSON Schema for Windsurf .windsurf/rules format - plain markdown without frontmatter",
|
|
7
7
|
"type": "object",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prpm",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.9",
|
|
4
4
|
"description": "Prompt Package Manager CLI - Install and manage prompt-based files",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"license": "MIT",
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@octokit/rest": "^22.0.0",
|
|
48
|
-
"@pr-pm/converters": "^1.1.
|
|
49
|
-
"@pr-pm/registry-client": "^2.1.
|
|
50
|
-
"@pr-pm/types": "^1.1.
|
|
48
|
+
"@pr-pm/converters": "^1.1.9",
|
|
49
|
+
"@pr-pm/registry-client": "^2.1.9",
|
|
50
|
+
"@pr-pm/types": "^1.1.9",
|
|
51
51
|
"ajv": "^8.17.1",
|
|
52
52
|
"ajv-formats": "^3.0.1",
|
|
53
53
|
"commander": "^11.1.0",
|