@sysvv/ai-skill 1.5.0 → 1.6.1

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.
@@ -1,5 +1,6 @@
1
1
  import fs from "fs-extra";
2
2
  import path from "node:path";
3
+ import matter from "gray-matter";
3
4
  import { parseSkillFile } from "./frontmatter.js";
4
5
  import { renderTemplate } from "./render.js";
5
6
  export async function loadSkill(skillFilePath, agent) {
@@ -13,10 +14,13 @@ export async function loadSkill(skillFilePath, agent) {
13
14
  ...Object.fromEntries(Object.entries(agentOverride).map(([key, value]) => [`provider_${key}`, value]))
14
15
  };
15
16
  const renderedBody = renderTemplate(body, variables);
17
+ // Reconstrói o SKILL.md completo com frontmatter + body renderizado
18
+ const fullContent = matter.stringify(renderedBody, metadata);
16
19
  return {
17
20
  path: absolute,
18
21
  metadata,
19
22
  rawBody: body,
20
- renderedBody
23
+ renderedBody,
24
+ fullContent
21
25
  };
22
26
  }
package/dist/index.js CHANGED
@@ -121,10 +121,10 @@ async function installSkills(agent) {
121
121
  const { metadata } = parseSkillFile(content);
122
122
  available.push({
123
123
  file,
124
- name: metadata.name,
125
- title: metadata.title ?? metadata.name,
124
+ name: metadata.id,
125
+ title: metadata.name ?? metadata.id,
126
126
  description: metadata.description,
127
- mcps: metadata.mcps ?? []
127
+ mcps: metadata.requires?.mcp ?? []
128
128
  });
129
129
  }
130
130
  if (available.length === 0) {
@@ -149,11 +149,11 @@ async function installSkills(agent) {
149
149
  console.log('');
150
150
  for (const file of selected) {
151
151
  const skill = await loadSkill(file, agent);
152
- const skillDir = path.join(destBase, skill.metadata.name);
152
+ const skillDir = path.join(destBase, skill.metadata.id);
153
153
  await fs.ensureDir(skillDir);
154
- await fs.writeFile(path.join(skillDir, "SKILL.md"), skill.renderedBody, "utf8");
155
- console.log(` ${GREEN}✔${ANSI.reset} ${skill.metadata.name}`);
156
- for (const mcpName of skill.metadata.mcps ?? []) {
154
+ await fs.writeFile(path.join(skillDir, "SKILL.md"), skill.fullContent, "utf8");
155
+ console.log(` ${GREEN}✔${ANSI.reset} ${skill.metadata.id}`);
156
+ for (const mcpName of skill.metadata.requires?.mcp ?? []) {
157
157
  mcpsToInstall.add(mcpName);
158
158
  }
159
159
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sysvv/ai-skill",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "description": "Instale skills de IA direto no seu projeto. Escolha o agent, escolha as skills.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,17 +1,16 @@
1
1
  ---
2
- name: ado-workflow
3
- title: ADO Workflow
4
- description: gerenciar work items do Azure DevOps integrado com Git local. Sincroniza estados, vincula commits e mantém ADO atualizado.
2
+ id: ado-workflow
3
+ name: Azure DevOps Workflow
5
4
  version: 1.0.0
6
- providers:
7
- - claude
8
- - codex
9
- - gemini
10
- - copilot
11
- mcps:
12
- - azure-devops
13
- variables:
14
- language: pt-BR
5
+ description: Development workflow integrating Azure DevOps work items with Git commits and state management.
6
+ category: workflow
7
+ language: en
8
+ dependencies: [git-cli]
9
+ requires:
10
+ mcp: [azure-devops]
11
+ cli: [git]
12
+ env: [AZURE_DEVOPS_PAT]
13
+ tags: [azure-devops, work-items, workflow, state-management]
15
14
  ---
16
15
 
17
16
  # ADO Workflow Skill
@@ -1,12 +1,11 @@
1
1
  ---
2
- name: create-ticket
3
- title: Create Ticket
4
- description: criar tickets técnicos claros a partir de contexto solto.
2
+ id: create-ticket
3
+ name: Create Ticket
5
4
  version: 1.0.0
6
- providers:
7
- - codex
8
- - gemini
9
- - claude
5
+ description: Create clear technical tickets from loose context.
6
+ category: productivity
7
+ language: pt-BR
8
+ tags: [ticket, task, productivity]
10
9
  variables:
11
10
  language: pt-BR
12
11
  provider_overrides:
@@ -1,12 +1,11 @@
1
1
  ---
2
- name: customer-reply
3
- title: Customer Reply
4
- description: gerar respostas profissionais para clientes a partir de contexto interno.
2
+ id: customer-reply
3
+ name: Customer Reply
5
4
  version: 1.0.0
6
- providers:
7
- - codex
8
- - gemini
9
- - claude
5
+ description: Generate professional customer replies from internal context.
6
+ category: communication
7
+ language: pt-BR
8
+ tags: [customer, reply, communication]
10
9
  variables:
11
10
  language: pt-BR
12
11
  tone: profissional
@@ -1,12 +1,11 @@
1
1
  ---
2
- name: summarize-meeting
3
- title: Summarize Meeting
4
- description: resumir reuniões em formato executivo com decisões, riscos e próximos passos.
2
+ id: summarize-meeting
3
+ name: Summarize Meeting
5
4
  version: 1.0.0
6
- providers:
7
- - codex
8
- - gemini
9
- - claude
5
+ description: Summarize meetings into executive format with decisions, risks and next steps.
6
+ category: productivity
7
+ language: pt-BR
8
+ tags: [meeting, summary, executive]
10
9
  variables:
11
10
  language: pt-BR
12
11
  tone: executivo
@@ -17,8 +16,6 @@ provider_overrides:
17
16
  style: "retornar texto mais didático e organizado"
18
17
  claude:
19
18
  style: "retornar bullets curtos e alta clareza"
20
- output:
21
- format: markdown
22
19
  ---
23
20
 
24
21
  Você é um assistente especialista em resumir reuniões.