@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 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: "accessibility-audit"
2
3
  description: "Audit web accessibility against W3C WCAG 2.2 Level AA using framework-agnostic checks, remediation patterns, and portable command-line scanning."
3
4
  skillMetadata:
4
5
  author: "skilly-hand"
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: "agents-root-orchestrator"
2
3
  description: "Author root AGENTS.md as a Where/What/When orchestrator that routes tasks and skill invocation clearly."
3
4
  skillMetadata:
4
5
  author: "skilly-hand"
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: "angular-guidelines"
2
3
  description: "Guide Angular code generation and review using latest stable Angular verification and modern framework best practices."
3
4
  skillMetadata:
4
5
  author: "skilly-hand"
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: "figma-mcp-0to1"
2
3
  description: "Guide users from Figma MCP installation and authentication through first canvas creation, with function-level tool coverage and operational recovery patterns."
3
4
  skillMetadata:
4
5
  author: "skilly-hand"
@@ -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: "react-guidelines"
2
3
  description: "Guide React code generation and review using latest stable React verification and modern framework best practices."
3
4
  skillMetadata:
4
5
  author: "skilly-hand"
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: "review-rangers"
2
3
  description: "Review code, decisions, and artifacts through a multi-perspective committee and a domain expert safety guard, then synthesize a structured verdict."
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 `description` and `skillMetadata.{author,last-edit,license,version,changelog,auto-invoke,allowed-tools}`.
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: "spec-driven-development"
2
3
  description: "Plan, execute, and verify multi-step work through versioned specs with small, testable tasks."
3
4
  skillMetadata:
4
5
  author: "skilly-hand"
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: "test-driven-development"
2
3
  description: "Guide implementation using the RED → GREEN → REFACTOR TDD cycle: write a failing test first, write the minimum code to pass, then refactor while tests stay green."
3
4
  skillMetadata:
4
5
  author: "skilly-hand"
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: "token-optimizer"
2
3
  description: "Classify task complexity and right-size reasoning depth, context gathering, and response detail to reduce wasted tokens."
3
4
  skillMetadata:
4
5
  author: "skilly-hand"
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/skilly-hand",
3
- "version": "0.23.1",
3
+ "version": "0.23.3",
4
4
  "license": "CC-BY-NC-4.0",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/catalog",
3
- "version": "0.23.1",
3
+ "version": "0.23.3",
4
4
  "private": true,
5
5
  "type": "module"
6
6
  }
@@ -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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/cli",
3
- "version": "0.23.1",
3
+ "version": "0.23.3",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "bin": {
@@ -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" }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/core",
3
- "version": "0.23.1",
3
+ "version": "0.23.3",
4
4
  "private": true,
5
5
  "type": "module"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/detectors",
3
- "version": "0.23.1",
3
+ "version": "0.23.3",
4
4
  "private": true,
5
5
  "type": "module"
6
6
  }