microsoft/template-gallery
Use when working in the Awesome Rayfin template gallery repo — creating, validating, or updating templates under templates/, regenerating gallery manifests, or updating the templates table in README. Triggers: awesome-rayfin, template gallery, templates/, new-template.sh, generate-manifest.mjs, rayfin-template.yml, manifest.json, template metadata, templateId, template.name, template.displayName, template.description, rayfin init -t, scaffold template, gallery README, leaf manifest, root manifest
npx skills add https://github.com/microsoft/awesome-rayfin --skill template-gallery
Use this skill when working in the Awesome Rayfin template gallery repo. This is an operational checklist for creating, validating, and maintaining gallery templates.
Make changes that keep individual templates, generated manifests, and gallery documentation consistent.
docs/template-guidelines.md for the expected template structure.AGENTS.md for gallery-specific workflow guidance.rayfin MCP server from .mcp.json when you need Rayfin SDK or CLI docs.templates/ if you need a working example..scratchpad/ for any temporary or working files — it is git-ignored. ./scripts/new-template.sh <name> "<Display Name>" "<description>"
templates/<name>/ directory.src/ for the application UI and client logicrayfin/data/ for entities and schema definitionsrayfin/rayfin.yml for service configurationREADME.md, manifest.json, and package.json.package.json includes:template.nametemplate.displayNametemplate.description node scripts/generate-manifest.mjs --check
rayfin init -t . --template-name "<name>"
If the CLI supports it in your environment, point the output to a new empty directory so you can inspect the scaffolded result safely.
package.json.package.json and confirm template.name, template.displayName, and template.description are present and correct.After changing template metadata or adding/removing templates, run:
node scripts/generate-manifest.mjs
This regenerates:
rayfin-template.ymlrayfin-template.ymlREADME.mdDo not hand-edit generated manifest content if the script owns it.
Each template should include these files:
package.json with template metadatamanifest.jsonrayfin-template.ymlrayfin/rayfin.ymlrayfin/data/schema.tsREADME.mdindex.htmlsrc/main.tsxtsconfig.jsonvite.config.tsIf any required file is missing, add it before considering the template complete.
rayfin/data/.@microsoft/rayfin-core.rayfin/data/schema.ts so the schema includes it.src/pages/.src/App.tsx.Templates are used on Windows, macOS, and Linux. Check for platform issues when adding or modifying scripts:
.mjs over .sh for any script that end users run. Shell scripts are fine for contributor tooling only (e.g., scripts/new-template.sh)./var/run/docker.sock), symlinks, or POSIX-only APIs without a Windows fallback.process.platform guards when behavior diverges (e.g., Docker daemon detection uses sockets on Unix but named pipes/CLI on Windows).cross-env for environment variables in npm scripts — never rely on VAR=value cmd syntax.path.join()/path.resolve() instead of string concatenation with /.&& chaining in npm scripts is safe (works in cmd, PowerShell 7+, and bash).When reviewing or validating a template, scan scripts for:
/var/run/, /tmp/, ~/.docker/run/)$(...), export)chmod, chown) without guardsdocs/template-guidelines.mdpackage.json is completenode scripts/generate-manifest.mjs --check passesrayfin init -t . --template-name "<name>" works for the changed templatenode scripts/generate-manifest.mjs when neededTake microsoft/template-gallery from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.