fix: исправить архив skill SLM Design
All checks were successful
CI/CD Pipeline / build (push) Successful in 45s
CI/CD Pipeline / docker (push) Successful in 1m15s
CI/CD Pipeline / deploy (push) Successful in 6s

- добавлен видимый путь slm-design/SKILL.md в zip-архив skill

- обновлена ссылка на SKILL.md в карточке документации
This commit is contained in:
2026-05-27 06:56:30 +03:00
parent 89cc873c19
commit 9da566ab7f
3 changed files with 5 additions and 3 deletions

View File

@@ -174,7 +174,7 @@
</li> </li>
<li> <li>
<span class="static-action-group-title">Skill для CLI-агентов</span> <span class="static-action-group-title">Skill для CLI-агентов</span>
<ul class="static-action-list"><li><a href="/slm-design/skill/.opencode/skills/slm-design/SKILL.md" target="_blank" rel="noopener noreferrer">slm-design/SKILL.md</a></li></ul> <ul class="static-action-list"><li><a href="/slm-design/skill/slm-design/SKILL.md" target="_blank" rel="noopener noreferrer">slm-design/SKILL.md</a></li></ul>
</li> </li>
<li> <li>
<span class="static-action-group-title">AI агентам</span> <span class="static-action-group-title">AI агентам</span>

View File

@@ -9,6 +9,7 @@ const projectDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '.
const rootDir = path.resolve(projectDir, '../..'); const rootDir = path.resolve(projectDir, '../..');
const templatePath = path.join(projectDir, 'skill', 'slm-design.skill.md'); const templatePath = path.join(projectDir, 'skill', 'slm-design.skill.md');
const outputDir = path.join(rootDir, 'public', config.slug, 'skill'); const outputDir = path.join(rootDir, 'public', config.slug, 'skill');
const skillPackageDir = path.join(outputDir, 'slm-design');
const skillZipPath = path.join(outputDir, 'slm-design.skill.zip'); const skillZipPath = path.join(outputDir, 'slm-design.skill.zip');
const description = 'Use this skill ONLY when working in a project that uses SLM Design (Scoped Layered Module Design) — a frontend architecture with layers app, layouts, screens, widgets, business, infra, ui, shared; modules with public API via index.ts; business-domain factories; and segments like ui/, parts/, hooks/, services/, mappers/. Apply when designing new modules, deciding where to place code, reviewing imports and dependency direction, refactoring existing SLM code, or planning monorepo placement (apps/, packages/ui, packages/infra, packages/shared). Project signals that SLM is active (strongest first): src/screens/ + src/widgets/ combination (highly specific to SLM — FSD uses pages/, Atomic and Clean don\'t have this layer); *.factory.ts files in business modules with index.ts exporting only factory and type-only exports; src/screens/ alongside src/ui/ and src/shared/; in monorepo, the same structure inside apps/{app}/src/. Note: src/business/ is a strong confirmation when present, but small or early-stage SLM projects may not have it yet — absence of business/ does NOT rule out SLM. Conflicting signals indicating other architectures: src/features/ or src/entities/ or src/pages/ (FSD); src/atoms/ or src/molecules/ (Atomic); src/domain/ or src/useCases/ (Clean). User signals (Russian or English): "SLM", "SLM Design", "Scoped Layered Module Design", "куда положить", "where to place", "какой слой", "which layer", "это модуль или компонент", "module or component", "можно ли так импортировать", "can I import", "deep import", "фабрика", "factory", "публичный API", "public API", "parts/", "business-домен", "business domain", "композиция фабрик", "factory composition". Do NOT use this skill for: projects on Feature-Sliced Design (FSD), Atomic Design, Clean Architecture, or any other frontend architecture — SLM has its own rules and is NOT a synonym for these; legacy codebases without explicit SLM structure (do not propose migration unless the user explicitly asks); small isolated tasks like styling, single-file bug fixes, CSS, or build tooling where architectural placement is not the question; backend architecture. When project architecture is ambiguous, ask the user before applying SLM rules.'; const description = 'Use this skill ONLY when working in a project that uses SLM Design (Scoped Layered Module Design) — a frontend architecture with layers app, layouts, screens, widgets, business, infra, ui, shared; modules with public API via index.ts; business-domain factories; and segments like ui/, parts/, hooks/, services/, mappers/. Apply when designing new modules, deciding where to place code, reviewing imports and dependency direction, refactoring existing SLM code, or planning monorepo placement (apps/, packages/ui, packages/infra, packages/shared). Project signals that SLM is active (strongest first): src/screens/ + src/widgets/ combination (highly specific to SLM — FSD uses pages/, Atomic and Clean don\'t have this layer); *.factory.ts files in business modules with index.ts exporting only factory and type-only exports; src/screens/ alongside src/ui/ and src/shared/; in monorepo, the same structure inside apps/{app}/src/. Note: src/business/ is a strong confirmation when present, but small or early-stage SLM projects may not have it yet — absence of business/ does NOT rule out SLM. Conflicting signals indicating other architectures: src/features/ or src/entities/ or src/pages/ (FSD); src/atoms/ or src/molecules/ (Atomic); src/domain/ or src/useCases/ (Clean). User signals (Russian or English): "SLM", "SLM Design", "Scoped Layered Module Design", "куда положить", "where to place", "какой слой", "which layer", "это модуль или компонент", "module or component", "можно ли так импортировать", "can I import", "deep import", "фабрика", "factory", "публичный API", "public API", "parts/", "business-домен", "business domain", "композиция фабрик", "factory composition". Do NOT use this skill for: projects on Feature-Sliced Design (FSD), Atomic Design, Clean Architecture, or any other frontend architecture — SLM has its own rules and is NOT a synonym for these; legacy codebases without explicit SLM structure (do not propose migration unless the user explicitly asks); small isolated tasks like styling, single-file bug fixes, CSS, or build tooling where architectural placement is not the question; backend architecture. When project architecture is ambiguous, ask the user before applying SLM rules.';
@@ -129,9 +130,10 @@ function buildSkill() {
writeFile(path.join(outputDir, '.claude', 'skills', 'slm-design', 'SKILL.md'), skillContent); writeFile(path.join(outputDir, '.claude', 'skills', 'slm-design', 'SKILL.md'), skillContent);
writeFile(path.join(outputDir, '.opencode', 'skills', 'slm-design', 'SKILL.md'), skillContent); writeFile(path.join(outputDir, '.opencode', 'skills', 'slm-design', 'SKILL.md'), skillContent);
writeFile(path.join(skillPackageDir, 'SKILL.md'), skillContent);
fs.rmSync(skillZipPath, { force: true }); fs.rmSync(skillZipPath, { force: true });
writeZipFromDirectory(outputDir, skillZipPath, ''); writeZipFromDirectory(skillPackageDir, skillZipPath, 'slm-design');
console.log(`Собран ${path.relative(rootDir, outputDir)}`); console.log(`Собран ${path.relative(rootDir, outputDir)}`);
console.log(`Собран ${path.relative(rootDir, skillZipPath)}`); console.log(`Собран ${path.relative(rootDir, skillZipPath)}`);

View File

@@ -53,7 +53,7 @@ export const docs: DocCard[] = [
{ {
title: 'Skill для CLI-агентов', title: 'Skill для CLI-агентов',
actions: [ actions: [
{ label: 'slm-design/SKILL.md', href: '/slm-design/skill/.opencode/skills/slm-design/SKILL.md' }, { label: 'slm-design/SKILL.md', href: '/slm-design/skill/slm-design/SKILL.md' },
], ],
}, },
{ {