From changesets
Validate existing changeset files in .changeset/ against @savvy-web/changesets format rules. Checks structural compliance with CSH001-CSH005 rules and reports errors with file paths and rule codes.
npx claudepluginhub savvy-web/systems --plugin changesetsThis skill uses the workspace's default tool permissions.
Validate all changeset files in `.changeset/` against the `@savvy-web/changesets` structural rules.
Creates new Angular apps using Angular CLI with flags for routing, SSR, SCSS, prefixes, and AI config. Follows best practices for modern TypeScript/Angular development. Use when starting Angular projects.
Generates Angular code and provides architectural guidance for projects, components, services, reactivity with signals, forms, dependency injection, routing, SSR, ARIA accessibility, animations, Tailwind styling, testing, and CLI tooling.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Validate all changeset files in .changeset/ against the @savvy-web/changesets structural rules.
Find all .changeset/*.md files, excluding README.md:
.md files in the .changeset/ directoryREADME.mdRead each discovered changeset file in full before beginning validation.
For each file, validate the following. Collect all violations — do not stop at the first error.
The file must begin with a YAML frontmatter block delimited by ---. The frontmatter must contain at least one entry mapping a package name (string) to a bump type of patch, minor, or major.
Valid example:
---
"@savvy-web/some-package": patch
---
Violation if: frontmatter is absent, malformed, or contains no valid package-to-bump-type mapping.
# (h1) headings are allowed anywhere in the file body (outside frontmatter)## directly to #### is a violation; ## to ### is valid)All ## (h2) headings must exactly match one of these 13 known categories:
| Priority | Heading |
|---|---|
| 1 | Breaking Changes |
| 2 | Features |
| 3 | Bug Fixes |
| 4 | Performance |
| 5 | Documentation |
| 6 | Refactoring |
| 7 | Tests |
| 8 | Build System |
| 9 | CI |
| 10 | Dependencies |
| 11 | Maintenance |
| 12 | Reverts |
| 13 | Other |
Matching is case-sensitive and exact. Any ## heading not in this list is a violation.
## section must contain at least one non-empty content node (paragraph, list, code block, etc.) — no empty sections```typescript, not bare ```)There must be no content before the first ## heading in the file body (outside frontmatter). Any paragraph, list, code block, or other node that appears before the first ## heading is a violation.
If the file contains any Markdown table under a ## Dependencies section, the table must follow this 5-column schema:
| Dependency | Type | Action | From | To |
|---|---|---|---|---|
| effect | dependency | updated | 3.18.0 | 3.19.1 |
Dependency — the package name (non-empty)Type — one of: dependency, devDependency, peerDependency, optionalDependency, workspace, configAction — one of: added, updated, removedFrom — previous version or — (em dash) for added packagesTo — new version or — (em dash) for removed packagesA table with different column names, a different number of columns, or invalid values is a violation.
Report results for each file, then a summary.
For each file, print the file path and its status. If there are violations, list each one with its rule code and a short description of what was found.
Passing file:
.changeset/my-changeset.md — PASS
Failing file:
.changeset/my-changeset.md — FAIL
CSH002 Unknown h2 heading: "New Features" (expected one of the 13 known categories)
CSH003 Empty section under "## Bug Fixes"
CSH003 Code fence missing language identifier (line ~14)
After all per-file results, print a summary line:
X files checked — Y passed, Z failed
If all files pass:
X files checked — all passed