@skilly-hand/skilly-hand 0.23.1 → 0.23.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/catalog/skills/accessibility-audit/SKILL.md +1 -0
- package/catalog/skills/agents-root-orchestrator/SKILL.md +1 -0
- package/catalog/skills/angular-guidelines/SKILL.md +1 -0
- package/catalog/skills/figma-mcp-0to1/SKILL.md +1 -0
- package/catalog/skills/frontend-design/SKILL.md +1 -0
- package/catalog/skills/output-optimizer/SKILL.md +1 -0
- package/catalog/skills/project-security/SKILL.md +1 -0
- package/catalog/skills/project-teacher/SKILL.md +1 -0
- package/catalog/skills/react-guidelines/SKILL.md +1 -0
- package/catalog/skills/review-rangers/SKILL.md +1 -0
- package/catalog/skills/skill-creator/SKILL.md +2 -1
- package/catalog/skills/skill-creator/assets/SKILL-TEMPLATE.md +1 -1
- package/catalog/skills/spec-driven-development/SKILL.md +1 -0
- package/catalog/skills/test-driven-development/SKILL.md +1 -0
- package/catalog/skills/token-optimizer/SKILL.md +1 -0
- package/catalog/skills/user-story-crafting/SKILL.md +1 -0
- package/package.json +1 -1
- package/packages/catalog/package.json +1 -1
- package/packages/catalog/src/index.js +7 -0
- package/packages/cli/package.json +1 -1
- package/packages/cli/src/inquirer-ui.js +1 -1
- package/packages/core/package.json +1 -1
- package/packages/detectors/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -16,6 +16,36 @@ All notable changes to this project are documented in this file.
|
|
|
16
16
|
### Removed
|
|
17
17
|
- _None._
|
|
18
18
|
|
|
19
|
+
## [0.23.3] - 2026-04-20
|
|
20
|
+
[View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.23.3)
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- Mirrored each skill `manifest.id` into top-level `name` frontmatter across catalog `SKILL.md` files.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- Updated catalog frontmatter rendering to include `name` and require a non-empty `manifest.id` during frontmatter validation.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- Expanded frontmatter sync tests to catch stale or missing `name` metadata regressions and enforce manifest id requirements.
|
|
30
|
+
|
|
31
|
+
### Removed
|
|
32
|
+
- _None._
|
|
33
|
+
|
|
34
|
+
## [0.23.2] - 2026-04-13
|
|
35
|
+
[View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.23.2)
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- Added regression coverage in interactive CLI tests to assert the explicit next-action prompt copy shown after install confirmation.
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
- Updated the interactive install decision prompt text to make `apply` and `menu` actions explicit for guided launcher users.
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
- _None._
|
|
45
|
+
|
|
46
|
+
### Removed
|
|
47
|
+
- _None._
|
|
48
|
+
|
|
19
49
|
## [0.23.1] - 2026-04-13
|
|
20
50
|
[View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.23.1)
|
|
21
51
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: "frontend-design"
|
|
2
3
|
description: "Project-aware frontend design skill that detects the existing tech stack, UI libraries, CSS variables, and design tokens before proposing any UI work. Supports greenfield projects via DESIGN.md context setup, and includes post-generation motion and visual refinement phases."
|
|
3
4
|
skillMetadata:
|
|
4
5
|
author: "skilly-hand"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: "output-optimizer"
|
|
2
3
|
description: "Optimize output token consumption through compact interpreter modes with controlled expansion when complexity, ambiguity, or risk requires more detail. Trigger: minimizing response verbosity while preserving clarity and correctness."
|
|
3
4
|
skillMetadata:
|
|
4
5
|
author: "skilly-hand"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: "project-security"
|
|
2
3
|
description: "Scan project configuration and release surfaces for leak and security risks, and enforce security gates on commit, push, and publish workflows across GitHub, GitLab, npm, pnpm, yarn, and generic CI. Trigger: validating repository security posture, preventing secret leaks, or hardening delivery pipelines."
|
|
3
4
|
skillMetadata:
|
|
4
5
|
author: "skilly-hand"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: "project-teacher"
|
|
2
3
|
description: "Scan the active project and teach any concept, code path, or decision using verified information, interactive questions, and simple explanations. Trigger: user asks to explain, understand, clarify, or learn about anything in the project or codebase."
|
|
3
4
|
skillMetadata:
|
|
4
5
|
author: "skilly-hand"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: "skill-creator"
|
|
2
3
|
description: "Create and standardize AI skills with reusable structure, metadata rules, and templates."
|
|
3
4
|
skillMetadata:
|
|
4
5
|
author: "skilly-hand"
|
|
@@ -115,7 +116,7 @@ Top-level `SKILL.md` files now include managed YAML frontmatter mirrored from `m
|
|
|
115
116
|
Rules:
|
|
116
117
|
|
|
117
118
|
- `manifest.json` is the single source of truth.
|
|
118
|
-
- Mirror only `
|
|
119
|
+
- Mirror only `name` (from `manifest.id`), `description`, and `skillMetadata.{author,last-edit,license,version,changelog,auto-invoke,allowed-tools}`.
|
|
119
120
|
- Do not manually edit mirrored frontmatter in `SKILL.md`; run sync automation instead.
|
|
120
121
|
- Keep instruction body content in `SKILL.md` focused on workflow guidance.
|
|
121
122
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# {Name of the Skill} Guide
|
|
2
2
|
|
|
3
3
|
<!--
|
|
4
|
-
Managed frontmatter is mirrored from manifest.json by automation.
|
|
4
|
+
Managed frontmatter is mirrored from manifest.json by automation (`name` is derived from `manifest.id`).
|
|
5
5
|
Do not hand-author frontmatter in this template.
|
|
6
6
|
-->
|
|
7
7
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: "user-story-crafting"
|
|
2
3
|
description: "Create and refine user stories with structured quality gates, splitting heuristics, and lightweight story mapping for release slicing. Trigger: writing, restructuring, splitting, or sequencing user stories for delivery-ready backlog work."
|
|
3
4
|
skillMetadata:
|
|
4
5
|
author: "skilly-hand"
|
package/package.json
CHANGED
|
@@ -128,6 +128,10 @@ function assertFrontmatterFields(manifest) {
|
|
|
128
128
|
throw new Error("Invalid manifest while building SKILL.md frontmatter");
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
+
if (typeof manifest.id !== "string" || manifest.id.trim().length === 0) {
|
|
132
|
+
throw new Error(`Skill "${manifest.id}" is missing required manifest.id for frontmatter mirroring`);
|
|
133
|
+
}
|
|
134
|
+
|
|
131
135
|
if (typeof manifest.description !== "string" || manifest.description.length === 0) {
|
|
132
136
|
throw new Error(`Skill "${manifest.id}" is missing required manifest.description for frontmatter mirroring`);
|
|
133
137
|
}
|
|
@@ -163,6 +167,7 @@ function assertFrontmatterFields(manifest) {
|
|
|
163
167
|
export function buildSkillFrontmatterPayload(manifest) {
|
|
164
168
|
assertFrontmatterFields(manifest);
|
|
165
169
|
return {
|
|
170
|
+
name: manifest.id,
|
|
166
171
|
description: manifest.description,
|
|
167
172
|
skillMetadata: {
|
|
168
173
|
author: manifest.skillMetadata.author,
|
|
@@ -178,6 +183,7 @@ export function buildSkillFrontmatterPayload(manifest) {
|
|
|
178
183
|
|
|
179
184
|
function renderSkillFrontmatterInner(payload) {
|
|
180
185
|
const lines = [
|
|
186
|
+
`name: ${yamlQuote(payload.name)}`,
|
|
181
187
|
`description: ${yamlQuote(payload.description)}`,
|
|
182
188
|
"skillMetadata:",
|
|
183
189
|
` author: ${yamlQuote(payload.skillMetadata.author)}`,
|
|
@@ -206,6 +212,7 @@ export function splitSkillMarkdown(content) {
|
|
|
206
212
|
const source = normalized.startsWith("\uFEFF") ? normalized.slice(1) : normalized;
|
|
207
213
|
const lines = splitLinesWithOffsets(source);
|
|
208
214
|
const mirroredKeys = new Set([
|
|
215
|
+
"name",
|
|
209
216
|
"description",
|
|
210
217
|
"skillMetadata",
|
|
211
218
|
"author",
|
|
@@ -161,7 +161,7 @@ export function createInquirerInteractiveUi({
|
|
|
161
161
|
{
|
|
162
162
|
type: "list",
|
|
163
163
|
name: "installDecision",
|
|
164
|
-
message: "Next action",
|
|
164
|
+
message: "Next action (type 'apply' to install, or 'menu' to go back)",
|
|
165
165
|
choices: [
|
|
166
166
|
{ name: "Apply installation", value: "apply" },
|
|
167
167
|
{ name: "Back to command menu", value: "menu" }
|