chore: remove deprecated workflows:* skill aliases (#284)

* docs: capture codex skill prompt model

* fix: align codex workflow conversion

* chore: remove deprecated workflows:* skill aliases

The workflows:brainstorm, workflows:plan, workflows:work, workflows:review,
and workflows:compound aliases have been deprecated long enough. Remove them
and update skill counts (46 → 41) across plugin.json, marketplace.json,
README, and CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Trevin Chow <trevin@trevinchow.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kieran Klaassen
2026-03-16 21:19:03 -07:00
committed by GitHub
parent 8c9f905859
commit 82c1fe86df
21 changed files with 670 additions and 149 deletions

View File

@@ -1,7 +1,9 @@
import { promises as fs } from "fs"
import path from "path"
import { backupFile, copyDir, ensureDir, writeText } from "../utils/files"
import { backupFile, ensureDir, readText, writeText } from "../utils/files"
import type { CodexBundle } from "../types/codex"
import type { ClaudeMcpServer } from "../types/claude"
import { transformContentForCodex } from "../utils/codex-content"
export async function writeCodexBundle(outputRoot: string, bundle: CodexBundle): Promise<void> {
const codexRoot = resolveCodexRoot(outputRoot)
@@ -17,7 +19,11 @@ export async function writeCodexBundle(outputRoot: string, bundle: CodexBundle):
if (bundle.skillDirs.length > 0) {
const skillsRoot = path.join(codexRoot, "skills")
for (const skill of bundle.skillDirs) {
await copyDir(skill.sourceDir, path.join(skillsRoot, skill.name))
await copyCodexSkillDir(
skill.sourceDir,
path.join(skillsRoot, skill.name),
bundle.invocationTargets,
)
}
}
@@ -39,6 +45,36 @@ export async function writeCodexBundle(outputRoot: string, bundle: CodexBundle):
}
}
async function copyCodexSkillDir(
sourceDir: string,
targetDir: string,
invocationTargets?: CodexBundle["invocationTargets"],
): Promise<void> {
await ensureDir(targetDir)
const entries = await fs.readdir(sourceDir, { withFileTypes: true })
for (const entry of entries) {
const sourcePath = path.join(sourceDir, entry.name)
const targetPath = path.join(targetDir, entry.name)
if (entry.isDirectory()) {
await copyCodexSkillDir(sourcePath, targetPath, invocationTargets)
continue
}
if (!entry.isFile()) continue
if (entry.name === "SKILL.md") {
const content = await readText(sourcePath)
await writeText(targetPath, transformContentForCodex(content, invocationTargets))
continue
}
await ensureDir(path.dirname(targetPath))
await fs.copyFile(sourcePath, targetPath)
}
}
function resolveCodexRoot(outputRoot: string): string {
return path.basename(outputRoot) === ".codex" ? outputRoot : path.join(outputRoot, ".codex")
}