Migrate prompts to skills - consolidate to single task customization model#761
Migrate prompts to skills - consolidate to single task customization model#761
Conversation
97043a1 to
ccc6997
Compare
|
@copilot can you retarget this PR to the |
I've successfully rebased this PR onto the
The branch is ready, but I cannot force push due to permissions. The PR needs to be force-pushed manually or closed and reopened against Alternatively, you can run: |
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
525a2f5 to
1ad2b3a
Compare
There was a problem hiding this comment.
Pull request overview
This PR migrates the repository’s “prompts” customization model to a skills-only model, updating plugin manifests and build/website tooling to remove prompt handling and emphasize skills.
Changes:
- Converts/re-frames many existing resources by standardizing skills frontmatter (
name,description) and removing prompt-oriented metadata. - Updates plugin manifests to reference
skillsinstead ofcommands. - Removes prompt generation/handling from engineering scripts and updates docs/README content accordingly.
Reviewed changes
Copilot reviewed 192 out of 193 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| skills/write-coding-standards-from-file/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/what-context-needed/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/update-specification/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/update-oo-component-documentation/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/update-markdown-file-index/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/update-llms/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/update-implementation-plan/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/update-avm-modules-in-bicep/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/typespec-create-api-plugin/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/typespec-create-agent/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/typespec-api-operations/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/typescript-mcp-server-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/tldr-prompt/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/technology-stack-blueprint-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/swift-mcp-server-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/suggest-awesome-github-copilot-skills/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/suggest-awesome-github-copilot-prompts/SKILL.md | Add name frontmatter; still references removed prompts docs/paths |
| skills/suggest-awesome-github-copilot-instructions/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/suggest-awesome-github-copilot-agents/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/structured-autonomy-plan/SKILL.md | Rename name to folder-based id; remove prompt-style metadata |
| skills/structured-autonomy-implement/SKILL.md | Rename name to folder-based id; remove prompt-style metadata |
| skills/structured-autonomy-generate/SKILL.md | Rename name to folder-based id; remove prompt-style metadata |
| skills/sql-optimization/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/sql-code-review/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/shuffle-json-data/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/rust-mcp-server-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/ruby-mcp-server-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/review-and-refactor/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/repo-story-time/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/remember/SKILL.md | Add name frontmatter |
| skills/remember-interactive-programming/SKILL.md | Normalize frontmatter; ensure single name key |
| skills/refactor-plan/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/refactor-method-complexity-reduce/SKILL.md | Normalize frontmatter; remove extra prompt-only fields |
| skills/readme-blueprint-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/python-mcp-server-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/pytest-coverage/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/prompt-builder/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/project-workflow-analysis-blueprint-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/power-platform-mcp-connector-suite/SKILL.md | Add name frontmatter; normalize description quoting |
| skills/power-bi-report-design-consultation/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/power-bi-performance-troubleshooting/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/power-bi-model-design-review/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/power-bi-dax-optimization/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/power-apps-code-app-scaffold/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/postgresql-optimization/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/postgresql-code-review/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/playwright-generate-test/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/playwright-explore-website/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/playwright-automation-fill-in-form/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/php-mcp-server-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/openapi-to-application-code/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/next-intl-add-language/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/my-pull-requests/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/my-issues/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/multi-stage-dockerfile/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/model-recommendation/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/mkdocs-translations/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/memory-merger/SKILL.md | Add name frontmatter |
| skills/mcp-deploy-manage-agents/SKILL.md | Wrap converted prompt content in skill frontmatter |
| skills/mcp-create-declarative-agent/SKILL.md | Wrap converted prompt content in skill frontmatter |
| skills/mcp-create-adaptive-cards/SKILL.md | Wrap converted prompt content in skill frontmatter |
| skills/mcp-copilot-studio-server-generator/SKILL.md | Add name frontmatter; normalize description quoting |
| skills/kotlin-springboot/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/kotlin-mcp-server-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/javascript-typescript-jest/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/java-springboot/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/java-refactoring-remove-parameter/SKILL.md | Normalize name to folder id; update formatting |
| skills/java-refactoring-extract-method/SKILL.md | Normalize name to folder id; update formatting |
| skills/java-mcp-server-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/java-junit/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/java-docs/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/java-add-graalvm-native-image-support/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/go-mcp-server-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/github-copilot-starter/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/git-flow-branch-creator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/generate-custom-instructions-from-codebase/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/gen-specs-as-issues/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/folder-structure-blueprint-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/first-ask/SKILL.md | Add name frontmatter |
| skills/finalize-agent-prompt/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/fedora-linux-triage/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/ef-core/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/editorconfig/SKILL.md | Normalize name to folder id; remove prompt-style metadata |
| skills/dotnet-upgrade/SKILL.md | Normalize name and description; adjust formatting |
| skills/dotnet-design-pattern-review/SKILL.md | Add name frontmatter; add spacing consistency |
| skills/dotnet-best-practices/SKILL.md | Add name frontmatter; add spacing consistency |
| skills/documentation-writer/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/devops-rollout-plan/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/declarative-agents/SKILL.md | Add name frontmatter; normalize description quoting |
| skills/debian-linux-triage/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/dataverse-python-usecase-builder/SKILL.md | Normalize name to folder id; normalize quoting |
| skills/dataverse-python-quickstart/SKILL.md | Normalize name to folder id; normalize quoting |
| skills/dataverse-python-production-code/SKILL.md | Normalize name to folder id; normalize quoting |
| skills/dataverse-python-advanced-patterns/SKILL.md | Normalize name to folder id; normalize quoting |
| skills/csharp-xunit/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/csharp-tunit/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/csharp-nunit/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/csharp-mstest/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/csharp-mcp-server-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/csharp-docs/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/csharp-async/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-tldr-page/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-technical-spike/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-spring-boot-kotlin-project/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-spring-boot-java-project/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-specification/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-readme/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-oo-component-documentation/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-llms/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-implementation-plan/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-github-pull-request-from-specification/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-github-issues-for-unmet-specification-requirements/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-github-issues-feature-from-implementation-plan/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-github-issue-feature-from-specification/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-github-action-workflow-specification/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-architectural-decision-record/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/create-agentsmd/SKILL.md | Add name frontmatter; normalize description quoting |
| skills/cosmosdb-datamodeling/SKILL.md | Add name frontmatter; add spacing consistency |
| skills/copilot-instructions-blueprint-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/convert-plaintext-to-md/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/conventional-commit/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/context-map/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/containerize-aspnetcore/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/containerize-aspnet-framework/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/comment-code-generate-a-tutorial/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/code-exemplars-blueprint-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/centos-linux-triage/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/breakdown-test/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/breakdown-plan/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/breakdown-feature-prd/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/breakdown-feature-implementation/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/breakdown-epic-pm/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/breakdown-epic-arch/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/boost-prompt/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/azure-resource-health-diagnose/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/az-cost-optimize/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/aspnet-minimal-api-openapi/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/architecture-blueprint-generator/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/arch-linux-triage/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| skills/apple-appstore-reviewer/SKILL.md | Normalize name to folder id; remove prompt-style metadata |
| skills/ai-prompt-engineering-safety-review/SKILL.md | Add name frontmatter; normalize description quoting |
| skills/add-educational-comments/SKILL.md | Add name frontmatter; remove prompt-style metadata |
| plugins/typespec-m365-copilot/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/typescript-mcp-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/testing-automation/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/technical-spike/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/swift-mcp-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/structured-autonomy/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/security-best-practices/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/rust-mcp-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/ruby-mcp-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/python-mcp-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/project-planning/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/power-platform-mcp-connector-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/power-bi-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/power-apps-code-apps/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/php-mcp-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/openapi-to-application-python-fastapi/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/openapi-to-application-nodejs-nestjs/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/openapi-to-application-java-spring-boot/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/openapi-to-application-go/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/openapi-to-application-csharp-dotnet/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/mcp-m365-copilot/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/kotlin-mcp-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/java-mcp-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/java-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/go-mcp-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/frontend-web-dev/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/devops-oncall/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/dataverse-sdk-for-python/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/database-data-management/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/csharp-mcp-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/csharp-dotnet-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/context-engineering/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/clojure-interactive-programming/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/azure-cloud-development/.github/plugin/plugin.json | Replace commands with skills entries |
| plugins/awesome-copilot/.github/plugin/plugin.json | Replace commands with skills entries |
| instructions/cpp-language-service-tools.instructions.md | Quote applyTo value and normalize spacing |
| eng/validate-plugins.mjs | Remove commands path validation; validate skills/agents only |
| eng/update-readme.mjs | Remove prompts README generation |
| eng/update-plugin-commands-to-skills.mjs | New script to migrate plugin manifests commands→skills |
| eng/migrate-prompts-to-skills.mjs | New script to convert prompts to skills folders |
| eng/materialize-plugins.mjs | Remove commands materialization; keep agents/skills |
| eng/generate-website-data.mjs | Remove prompts from website data (currently has merge conflicts) |
| eng/contributor-report.mjs | Remove prompts from contribution type patterns |
| eng/constants.mjs | Remove prompts constants/templates and prompt install URL |
| docs/README.skills.md | Expand skills index to include migrated skills |
| docs/README.plugins.md | Update wording to remove prompts references |
| docs/README.instructions.md | Update instructions index row formatting/description for C++ tools |
| README.md | Update repo overview/docs to remove prompts emphasis and add skills-only wording |
| CONTRIBUTING.md | Remove prompt contribution section; update terminology (currently has merge conflicts) |
| AGENTS.md | Update repo description/structure to remove prompts references |
Comments suppressed due to low confidence (3)
skills/suggest-awesome-github-copilot-prompts/SKILL.md:15
- This skill still instructs users to fetch docs/README.prompts.md (which no longer exists in this repo) and to scan/download prompt files into
.github/prompts/. Since the repo is migrating to a skills-only model, this content is now stale and the links/paths will fail; update it to suggest skills (and the current docs/README.skills.md) or remove/rename the skill.
eng/generate-website-data.mjs:860 - eng/generate-website-data.mjs still contains unresolved merge-conflict markers (<<<<<<< / ======= / >>>>>>>) in main(), leaving both the old prompts-generation branch and the new prompts-removed branch interleaved. This will cause a syntax error and breaks website data generation; resolve the conflict and remove any remaining prompts-related generation.
<<<<<<< HEAD
const workflowsData = generateWorkflowsData(gitDates);
const workflows = workflowsData.items;
console.log(
`✓ Generated ${workflows.length} workflows (${workflowsData.filters.triggers.length} triggers, ${workflowsData.filters.tags.length} tags)`
);
const promptsData = generatePromptsData(gitDates);
const prompts = promptsData.items;
console.log(
`✓ Generated ${prompts.length} prompts (${promptsData.filters.tools.length} tools)`
);
=======
>>>>>>> 525a2f5 (Remove prompts from website generation and contributor scripts)
eng/generate-website-data.mjs:267
- generatePromptsData() is now incomplete: it references PROMPTS_DIR but never closes the function body (the next top-level JSDoc/comment starts immediately), which will nest subsequent functions inside it and cause a syntax error. Either remove generatePromptsData entirely (and any PROMPTS_DIR usage) or restore a complete implementation consistent with the new skills-only model.
/**
* Generate prompts metadata
*/
function generatePromptsData(gitDates) {
const prompts = [];
const files = fs
.readdirSync(PROMPTS_DIR)
.filter((f) => f.endsWith(".prompt.md"));
/**
* Parse applyTo field into an array of patterns
*/
function parseApplyToPatterns(applyTo) {
| fs.writeFileSync( | ||
| <<<<<<< HEAD | ||
| path.join(WEBSITE_DATA_DIR, "workflows.json"), | ||
| JSON.stringify(workflowsData, null, 2) | ||
| ); | ||
|
|
||
| fs.writeFileSync( | ||
| path.join(WEBSITE_DATA_DIR, "prompts.json"), | ||
| JSON.stringify(promptsData, null, 2) | ||
| ); | ||
|
|
||
| fs.writeFileSync( | ||
| ======= | ||
| >>>>>>> 525a2f5 (Remove prompts from website generation and contributor scripts) | ||
| path.join(WEBSITE_DATA_DIR, "instructions.json"), | ||
| JSON.stringify(instructionsData, null, 2) | ||
| ); |
There was a problem hiding this comment.
More unresolved merge-conflict markers remain in the JSON writing section (around workflows/prompts vs instructions). This will not run as-is and also risks omitting required outputs (e.g., workflows.json). Resolve the conflict and ensure only the intended files are written.
This issue also appears on line 846 of the same file.
| <<<<<<< HEAD | ||
| | **Workflows** | Agentic Workflows for AI-powered repository automation | ⚡ | | ||
| | **Plugins** | Installable packages of related prompts, agents, or skills | 🎁 | | ||
| ======= | ||
| | **Plugins** | Installable packages of related agents, commands, or skills | 🎁 | | ||
| >>>>>>> 9e10967 (Update documentation to remove prompts references) |
There was a problem hiding this comment.
CONTRIBUTING.md contains unresolved merge-conflict markers in the Contribution Types table. This will render the document incorrectly and must be resolved before merge.
| <<<<<<< HEAD | |
| | **Workflows** | Agentic Workflows for AI-powered repository automation | ⚡ | | |
| | **Plugins** | Installable packages of related prompts, agents, or skills | 🎁 | | |
| ======= | |
| | **Plugins** | Installable packages of related agents, commands, or skills | 🎁 | | |
| >>>>>>> 9e10967 (Update documentation to remove prompts references) | |
| | **Workflows** | Agentic Workflows for AI-powered repository automation | ⚡ | | |
| | **Plugins** | Installable packages of related agents, commands, or skills | 🎁 | |
| import { ROOT_FOLDER, PROMPTS_DIR, SKILLS_DIR } from "./constants.mjs"; | ||
| import { parseFrontmatter } from "./yaml-parser.mjs"; | ||
|
|
There was a problem hiding this comment.
eng/migrate-prompts-to-skills.mjs imports PROMPTS_DIR from eng/constants.mjs, but PROMPTS_DIR has been removed from constants (and is no longer exported). As written, this script won’t run (import error). Either reintroduce/export PROMPTS_DIR for migration tooling, or update the script to locate the legacy prompts directory without relying on constants.
| import { ROOT_FOLDER, PROMPTS_DIR, SKILLS_DIR } from "./constants.mjs"; | |
| import { parseFrontmatter } from "./yaml-parser.mjs"; | |
| import { ROOT_FOLDER, SKILLS_DIR } from "./constants.mjs"; | |
| import { parseFrontmatter } from "./yaml-parser.mjs"; | |
| const PROMPTS_DIR = path.join(ROOT_FOLDER, "prompts"); |
| // Build SKILL.md content | ||
| const skillContent = `--- | ||
| name: ${skillFrontmatter.name} | ||
| description: '${skillFrontmatter.description.replace(/'/g, "'\\''")}' |
There was a problem hiding this comment.
The YAML single-quote escaping in the generated SKILL.md frontmatter is incorrect. In YAML single-quoted strings, embedded single quotes must be doubled (''), not backslash-escaped. The current replacement will emit backslashes into the description and can make the frontmatter invalid or change the intended text.
| description: '${skillFrontmatter.description.replace(/'/g, "'\\''")}' | |
| description: '${skillFrontmatter.description.replace(/'/g, "''")}' |
| // Convert commands to skills format | ||
| // Commands: "./commands/foo.md" → Skills: "./skills/foo/" | ||
| const skills = plugin.commands.map((cmd) => { | ||
| const basename = path.basename(cmd, ".md"); | ||
| return `./skills/${basename}/`; | ||
| }); | ||
|
|
||
| // Initialize skills array if it doesn't exist | ||
| if (!plugin.skills) { | ||
| plugin.skills = []; | ||
| } | ||
|
|
||
| // Add converted commands to skills array | ||
| plugin.skills.push(...skills); |
There was a problem hiding this comment.
This script appends converted entries to plugin.skills without checking for duplicates and without validating the command path format (e.g., ensuring it starts with "./commands/" and ends with ".md"). That can produce invalid skill paths or duplicate entries in plugin.json. Consider filtering/validating inputs and de-duping plugin.skills before writing.
| // Convert commands to skills format | |
| // Commands: "./commands/foo.md" → Skills: "./skills/foo/" | |
| const skills = plugin.commands.map((cmd) => { | |
| const basename = path.basename(cmd, ".md"); | |
| return `./skills/${basename}/`; | |
| }); | |
| // Initialize skills array if it doesn't exist | |
| if (!plugin.skills) { | |
| plugin.skills = []; | |
| } | |
| // Add converted commands to skills array | |
| plugin.skills.push(...skills); | |
| // Validate and convert commands to skills format | |
| // Commands: "./commands/foo.md" → Skills: "./skills/foo/" | |
| const validCommands = plugin.commands.filter((cmd) => { | |
| if (typeof cmd !== "string") { | |
| console.log(` ⚠ Skipping non-string command entry: ${JSON.stringify(cmd)}`); | |
| return false; | |
| } | |
| if (!cmd.startsWith("./commands/") || !cmd.endsWith(".md")) { | |
| console.log(` ⚠ Skipping command with unexpected format: ${cmd}`); | |
| return false; | |
| } | |
| return true; | |
| }); | |
| const skills = validCommands.map((cmd) => { | |
| const basename = path.basename(cmd, ".md"); | |
| return `./skills/${basename}/`; | |
| }); | |
| // Initialize skills array if it doesn't exist or is not an array | |
| if (!Array.isArray(plugin.skills)) { | |
| plugin.skills = []; | |
| } | |
| // Add converted commands to skills array, de-duplicating entries | |
| const allSkills = new Set(plugin.skills); | |
| for (const skillPath of skills) { | |
| allSkills.add(skillPath); | |
| } | |
| plugin.skills = Array.from(allSkills); |
Pull Request Checklist
npm startand verified thatREADME.mdis up to date.Description
Prompts and Skills served overlapping purposes. Skills provide superior capabilities: bundled assets, standardized specification (Agent Skills), and agent auto-invocation. Consolidated to skills-only model.
Changes
Migration (142 prompts → skills)
eng/migrate-prompts-to-skills.mjsto automate conversion.prompt.mdfiles to skill folders withSKILL.mdnamefield, preserveddescriptionPlugin Updates (35 affected)
eng/update-plugin-commands-to-skills.mjsfor bulk updatescommandsarray toskillsarray in plugin.json./commands/foo.md→./skills/foo/Build Infrastructure
validate-plugins.mjs,materialize-plugins.mjs,update-readme.mjsgeneratePromptsSection()andPROMPTS_DIRreferencesgenerate-website-data.mjsandcontributor-report.mjsDocumentation
README.md,AGENTS.md,CONTRIBUTING.mddocs/README.prompts.mdCleanup
/promptsdirectory (142 files)Type of Contribution
Additional Notes
All validation passing:
skill:validate(193 skills),plugin:validate(45 plugins),npm run buildgenerates correct outputs.Skills are backward compatible - former prompts maintain same functionality with additional capabilities (bundled assets, spec compliance).
By submitting this pull request, I confirm that my contribution abides by the Code of Conduct and will be licensed under the MIT License.
Original prompt
🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.