@hasna/skills 0.1.39 → 0.1.41
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/bin/index.js +24 -4
- package/bin/mcp.js +9 -1
- package/dist/index.js +9 -1
- package/package.json +1 -1
- package/skills/brand-assets/SKILL.md +57 -0
- package/skills/brand-assets/package.json +11 -0
package/bin/index.js
CHANGED
|
@@ -1910,7 +1910,7 @@ var package_default;
|
|
|
1910
1910
|
var init_package = __esm(() => {
|
|
1911
1911
|
package_default = {
|
|
1912
1912
|
name: "@hasna/skills",
|
|
1913
|
-
version: "0.1.
|
|
1913
|
+
version: "0.1.41",
|
|
1914
1914
|
description: "Skills library for AI coding agents",
|
|
1915
1915
|
type: "module",
|
|
1916
1916
|
bin: {
|
|
@@ -3286,6 +3286,13 @@ var init_media_processing = __esm(() => {
|
|
|
3286
3286
|
var DESIGN_BRANDING_SKILLS;
|
|
3287
3287
|
var init_design_branding = __esm(() => {
|
|
3288
3288
|
DESIGN_BRANDING_SKILLS = [
|
|
3289
|
+
{
|
|
3290
|
+
name: "brand-assets",
|
|
3291
|
+
displayName: "Brand Assets",
|
|
3292
|
+
description: "Fetch official brand assets from a website or brand name with logos, PNG sizes, palette, typography, source metadata, and manifests",
|
|
3293
|
+
category: "Design & Branding",
|
|
3294
|
+
tags: ["brand", "logo", "assets", "palette", "typography", "premium", "remote"]
|
|
3295
|
+
},
|
|
3289
3296
|
{
|
|
3290
3297
|
name: "icon-pack",
|
|
3291
3298
|
displayName: "Icon Pack",
|
|
@@ -6661,6 +6668,7 @@ var init_pricing = __esm(() => {
|
|
|
6661
6668
|
init_skill_aliases();
|
|
6662
6669
|
MUSIC_ALBUM_SONG_COUNTS = [7, 14, 21];
|
|
6663
6670
|
PREMIUM_SKILLS = [
|
|
6671
|
+
{ slug: "brand-assets", displayName: "Brand Assets", tier: "premium", costCents: 200, providers: ["hosted"], description: "Hosted brand asset discovery package with logos, PNG sizes, palette, typography, source metadata, and manifest" },
|
|
6664
6672
|
{ slug: "icon-pack", displayName: "Icon Pack", tier: "premium", costCents: 200, providers: ["hosted"], description: "Hosted coordinated icon pack with SVGs, transparent PNGs, size variants, and manifest" },
|
|
6665
6673
|
{ slug: "logo-design", displayName: "Logo Design", tier: "premium", costCents: 50, providers: ["hosted"], description: "Hosted multi-variant logo package with transparent PNGs, vector-style SVGs, usage notes, and manifest" },
|
|
6666
6674
|
{ slug: "deepresearch", displayName: "Deep Research", tier: "premium", costCents: 20, providers: ["exa"], description: "Agentic web research with semantic search and synthesis" },
|
|
@@ -42139,11 +42147,23 @@ function registerRegistry(parent) {
|
|
|
42139
42147
|
const registry2 = parent.command("registry").description("Generate registry artifacts for hosted skills services");
|
|
42140
42148
|
registry2.command("sync").description("Generate a deterministic registry sync artifact").option("--profile <profile>", "Registry profile: basic or all", "all").option("--output <path>", "Write artifact to a JSON file").option("--no-docs", "Exclude skill documentation content").option("--no-requirements", "Exclude extracted skill requirements").option("--no-validation", "Exclude validation results").option("--json", "Print artifact JSON to stdout", false).action((options) => handleRegistrySync(options));
|
|
42141
42149
|
}
|
|
42142
|
-
function
|
|
42150
|
+
async function writeJson2(value, space) {
|
|
42151
|
+
const text = `${JSON.stringify(value, null, space)}
|
|
42152
|
+
`;
|
|
42153
|
+
await new Promise((resolve, reject) => {
|
|
42154
|
+
process.stdout.write(text, (error48) => {
|
|
42155
|
+
if (error48)
|
|
42156
|
+
reject(error48);
|
|
42157
|
+
else
|
|
42158
|
+
resolve();
|
|
42159
|
+
});
|
|
42160
|
+
});
|
|
42161
|
+
}
|
|
42162
|
+
async function handleRegistrySync(options) {
|
|
42143
42163
|
if (options.profile !== "basic" && options.profile !== "all") {
|
|
42144
42164
|
const error48 = `Unknown registry profile: ${options.profile}. Available: basic, all`;
|
|
42145
42165
|
if (options.json)
|
|
42146
|
-
|
|
42166
|
+
await writeJson2({ error: error48 });
|
|
42147
42167
|
else
|
|
42148
42168
|
console.error(chalk11.red(error48));
|
|
42149
42169
|
process.exitCode = 1;
|
|
@@ -42160,7 +42180,7 @@ function handleRegistrySync(options) {
|
|
|
42160
42180
|
writeRegistrySyncArtifact(options.output, artifact);
|
|
42161
42181
|
}
|
|
42162
42182
|
if (options.json || !options.output) {
|
|
42163
|
-
|
|
42183
|
+
await writeJson2(artifact, 2);
|
|
42164
42184
|
return;
|
|
42165
42185
|
}
|
|
42166
42186
|
const invalid = artifact.summary.invalidSkillCount ?? "not checked";
|
package/bin/mcp.js
CHANGED
|
@@ -6934,6 +6934,7 @@ var init_pricing = __esm(() => {
|
|
|
6934
6934
|
init_skill_aliases();
|
|
6935
6935
|
MUSIC_ALBUM_SONG_COUNTS = [7, 14, 21];
|
|
6936
6936
|
PREMIUM_SKILLS = [
|
|
6937
|
+
{ slug: "brand-assets", displayName: "Brand Assets", tier: "premium", costCents: 200, providers: ["hosted"], description: "Hosted brand asset discovery package with logos, PNG sizes, palette, typography, source metadata, and manifest" },
|
|
6937
6938
|
{ slug: "icon-pack", displayName: "Icon Pack", tier: "premium", costCents: 200, providers: ["hosted"], description: "Hosted coordinated icon pack with SVGs, transparent PNGs, size variants, and manifest" },
|
|
6938
6939
|
{ slug: "logo-design", displayName: "Logo Design", tier: "premium", costCents: 50, providers: ["hosted"], description: "Hosted multi-variant logo package with transparent PNGs, vector-style SVGs, usage notes, and manifest" },
|
|
6939
6940
|
{ slug: "deepresearch", displayName: "Deep Research", tier: "premium", costCents: 20, providers: ["exa"], description: "Agentic web research with semantic search and synthesis" },
|
|
@@ -21796,7 +21797,7 @@ class StdioServerTransport {
|
|
|
21796
21797
|
// package.json
|
|
21797
21798
|
var package_default = {
|
|
21798
21799
|
name: "@hasna/skills",
|
|
21799
|
-
version: "0.1.
|
|
21800
|
+
version: "0.1.41",
|
|
21800
21801
|
description: "Skills library for AI coding agents",
|
|
21801
21802
|
type: "module",
|
|
21802
21803
|
bin: {
|
|
@@ -30709,6 +30710,13 @@ var MEDIA_PROCESSING_SKILLS = [
|
|
|
30709
30710
|
|
|
30710
30711
|
// src/lib/registry-data/design-branding.ts
|
|
30711
30712
|
var DESIGN_BRANDING_SKILLS = [
|
|
30713
|
+
{
|
|
30714
|
+
name: "brand-assets",
|
|
30715
|
+
displayName: "Brand Assets",
|
|
30716
|
+
description: "Fetch official brand assets from a website or brand name with logos, PNG sizes, palette, typography, source metadata, and manifests",
|
|
30717
|
+
category: "Design & Branding",
|
|
30718
|
+
tags: ["brand", "logo", "assets", "palette", "typography", "premium", "remote"]
|
|
30719
|
+
},
|
|
30712
30720
|
{
|
|
30713
30721
|
name: "icon-pack",
|
|
30714
30722
|
displayName: "Icon Pack",
|
package/dist/index.js
CHANGED
|
@@ -1275,6 +1275,13 @@ var MEDIA_PROCESSING_SKILLS = [
|
|
|
1275
1275
|
|
|
1276
1276
|
// src/lib/registry-data/design-branding.ts
|
|
1277
1277
|
var DESIGN_BRANDING_SKILLS = [
|
|
1278
|
+
{
|
|
1279
|
+
name: "brand-assets",
|
|
1280
|
+
displayName: "Brand Assets",
|
|
1281
|
+
description: "Fetch official brand assets from a website or brand name with logos, PNG sizes, palette, typography, source metadata, and manifests",
|
|
1282
|
+
category: "Design & Branding",
|
|
1283
|
+
tags: ["brand", "logo", "assets", "palette", "typography", "premium", "remote"]
|
|
1284
|
+
},
|
|
1278
1285
|
{
|
|
1279
1286
|
name: "icon-pack",
|
|
1280
1287
|
displayName: "Icon Pack",
|
|
@@ -2658,6 +2665,7 @@ var MUSIC_ALBUM_SLUG = "music-album";
|
|
|
2658
2665
|
var MUSIC_ALBUM_SONG_COUNTS = [7, 14, 21];
|
|
2659
2666
|
var MUSIC_ALBUM_COST_CENTS_PER_SONG = 150;
|
|
2660
2667
|
var PREMIUM_SKILLS = [
|
|
2668
|
+
{ slug: "brand-assets", displayName: "Brand Assets", tier: "premium", costCents: 200, providers: ["hosted"], description: "Hosted brand asset discovery package with logos, PNG sizes, palette, typography, source metadata, and manifest" },
|
|
2661
2669
|
{ slug: "icon-pack", displayName: "Icon Pack", tier: "premium", costCents: 200, providers: ["hosted"], description: "Hosted coordinated icon pack with SVGs, transparent PNGs, size variants, and manifest" },
|
|
2662
2670
|
{ slug: "logo-design", displayName: "Logo Design", tier: "premium", costCents: 50, providers: ["hosted"], description: "Hosted multi-variant logo package with transparent PNGs, vector-style SVGs, usage notes, and manifest" },
|
|
2663
2671
|
{ slug: "deepresearch", displayName: "Deep Research", tier: "premium", costCents: 20, providers: ["exa"], description: "Agentic web research with semantic search and synthesis" },
|
|
@@ -18035,7 +18043,7 @@ import { dirname as dirname3, relative as relative2 } from "path";
|
|
|
18035
18043
|
// package.json
|
|
18036
18044
|
var package_default = {
|
|
18037
18045
|
name: "@hasna/skills",
|
|
18038
|
-
version: "0.1.
|
|
18046
|
+
version: "0.1.41",
|
|
18039
18047
|
description: "Skills library for AI coding agents",
|
|
18040
18048
|
type: "module",
|
|
18041
18049
|
bin: {
|
package/package.json
CHANGED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brand-assets
|
|
3
|
+
description: Fetch official brand assets from a website or brand name, then return logos, palette, typography, source metadata, and a clean asset manifest. Use when a user asks to find, extract, download, package, or normalize a brand's logo and visual identity assets.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Brand Assets
|
|
7
|
+
|
|
8
|
+
Discover official brand identity material for a company, product, or website and package it into a clean handoff folder.
|
|
9
|
+
|
|
10
|
+
## Requirements
|
|
11
|
+
|
|
12
|
+
- Hosted premium execution requires `SKILLS_API_KEY`.
|
|
13
|
+
- Provider keys stay server-side in the hosted runtime.
|
|
14
|
+
- Provide either a brand name, a website URL, or both. A URL is preferred when the brand name is ambiguous.
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
skills run brand-assets --url https://example.com
|
|
20
|
+
skills run brand-assets --brand "Acme Ledger" --sizes 64,128,256,512,1024
|
|
21
|
+
skills run brand-assets "Acme Ledger" --url https://example.com --include-screenshot
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Options
|
|
25
|
+
|
|
26
|
+
| Option | Description | Default |
|
|
27
|
+
|--------|-------------|---------|
|
|
28
|
+
| `--brand <text>` | Brand, product, or company name. Positional text also works. | inferred when possible |
|
|
29
|
+
| `--url <url>` | Official website or landing page to inspect. | optional |
|
|
30
|
+
| `--sizes <list>` | Comma-separated PNG export sizes. | `64,128,256,512,1024` |
|
|
31
|
+
| `--include-screenshot` | Include a visual reference screenshot when available. | false |
|
|
32
|
+
|
|
33
|
+
## Hosted Workflow
|
|
34
|
+
|
|
35
|
+
1. Resolve the most likely official website and brand pages from the supplied brand or URL.
|
|
36
|
+
2. Inspect the selected pages for linked logos, favicon assets, social preview images, brand colors, fonts, typography, and structured metadata.
|
|
37
|
+
3. Prefer official vector logos, then normalize fallback image assets into the requested PNG sizes.
|
|
38
|
+
4. Name every asset with a stable brand slug, file role, variant, and size.
|
|
39
|
+
5. Include source URLs and confidence notes so downstream users know where each asset came from.
|
|
40
|
+
|
|
41
|
+
## Outputs
|
|
42
|
+
|
|
43
|
+
- `manifest.json`
|
|
44
|
+
- `brand-profile.json`
|
|
45
|
+
- `brand-profile.md`
|
|
46
|
+
- `palette.json`
|
|
47
|
+
- `typography.md`
|
|
48
|
+
- `logo-usage.md`
|
|
49
|
+
- `sources.json`
|
|
50
|
+
- `logos/svg/<brand>-logo.svg`
|
|
51
|
+
- `logos/png/<brand>-logo-64.png`
|
|
52
|
+
- `logos/png/<brand>-logo-128.png`
|
|
53
|
+
- `logos/png/<brand>-logo-256.png`
|
|
54
|
+
- `logos/png/<brand>-logo-512.png`
|
|
55
|
+
- `logos/png/<brand>-logo-1024.png`
|
|
56
|
+
|
|
57
|
+
After submitting a hosted run, poll with `skills runs status <run-id>` and download outputs with `skills exports download <run-id>`.
|