Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"plugins": [
{
"name": "mainframe",
"displayName": "Mainframe",
"source": "./",
"description": "Create and share short video updates from agent work."
}
Expand Down
1 change: 1 addition & 0 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"repository": "https://github.com/mainframecomputer/mainframe-plugins.git",
"license": "UNLICENSED",
"keywords": ["mainframe", "agent-skills", "mcp", "hooks", "video"],
"displayName": "Mainframe",
"skills": "./skills",
"mcpServers": "./.mcp.json",
"hooks": "./hooks/claude/hooks.json"
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"interface": {
"displayName": "Mainframe",
"shortDescription": "Create and share short video updates from agent work.",
"longDescription": "Watch what your agents did instead of reading through all of it. Each task wraps up with a short narrated video in your own voice and company branding, so you stay up to date at a glance and can share it with your team.",
"longDescription": "Turn agent work into videos your team can keep up with. Agents can generate a short video or upload one they recorded themselves, narrated in your voice and styled with your brand. Every video becomes a link your team can watch.",
"developerName": "Mainframe",
"category": "Productivity",
"logo": "./assets/logo.png"
Expand Down
1 change: 1 addition & 0 deletions .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"repository": "https://github.com/mainframecomputer/mainframe-plugins.git",
"license": "UNLICENSED",
"keywords": ["mainframe", "agent-skills", "mcp", "hooks", "video"],
"displayName": "Mainframe",
"logo": "assets/logo.png",
"skills": "./skills",
"mcpServers": "./.mcp.json",
Expand Down
5 changes: 4 additions & 1 deletion tooling/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ const metadata = MetadataSchema.parse({
version: "0.1.0",
description: "Create and share short video updates from agent work.",
longDescription:
"Watch what your agents did instead of reading through all of it. Each task wraps up with a short narrated video in your own voice and company branding, so you stay up to date at a glance and can share it with your team.",
"Turn agent work into videos your team can keep up with. Agents can generate a short video or upload one they recorded themselves, narrated in your voice and styled with your brand. Every video becomes a link your team can watch.",
category: "Productivity",
author: {
name: "Mainframe",
Expand Down Expand Up @@ -67,6 +67,7 @@ const sharedManifest = {
function main(): void {
writeJson(".cursor-plugin/plugin.json", {
...sharedManifest,
displayName: metadata.displayName,
logo: metadata.logo,
skills: metadata.skillDirectory,
mcpServers: metadata.mcpServers,
Expand Down Expand Up @@ -147,6 +148,7 @@ function codexMarketplace() {
function claudeManifest() {
return {
...sharedManifest,
displayName: metadata.displayName,
skills: metadata.skillDirectory,
mcpServers: metadata.mcpServers,
hooks: CLAUDE_HOOKS,
Expand All @@ -164,6 +166,7 @@ function claudeMarketplace() {
plugins: [
{
name: metadata.name,
displayName: metadata.displayName,
source: "./",
description: metadata.description,
},
Expand Down
5 changes: 4 additions & 1 deletion tooling/manifest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const RepositorySchema = z.literal("https://github.com/mainframecomputer/mainfra
const DescriptionSchema = z.literal("Create and share short video updates from agent work.");

const LongDescriptionSchema = z.literal(
"Watch what your agents did instead of reading through all of it. Each task wraps up with a short narrated video in your own voice and company branding, so you stay up to date at a glance and can share it with your team.",
"Turn agent work into videos your team can keep up with. Agents can generate a short video or upload one they recorded themselves, narrated in your voice and styled with your brand. Every video becomes a link your team can watch.",
);

const KeywordsSchema = z.tuple([
Expand All @@ -40,6 +40,7 @@ const SharedManifestSchema = z.object({
});

const CursorManifestSchema = SharedManifestSchema.extend({
displayName: z.literal("Mainframe"),
logo: z.literal("assets/logo.png"),
hooks: z.literal("./hooks/cursor/hooks.json"),
}).strict();
Expand All @@ -59,6 +60,7 @@ const CodexManifestSchema = SharedManifestSchema.extend({
}).strict();

const ClaudeManifestSchema = SharedManifestSchema.extend({
displayName: z.literal("Mainframe"),
hooks: z.literal("./hooks/claude/hooks.json"),
}).strict();

Expand Down Expand Up @@ -156,6 +158,7 @@ describe("generated plugin manifests", () => {
z
.object({
name: z.literal("mainframe"),
displayName: z.literal("Mainframe"),
source: z.literal("./"),
description: DescriptionSchema,
})
Expand Down