@maccesar/aiskills 1.17.1 → 1.18.0

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.
Files changed (35) hide show
  1. package/README.md +41 -0
  2. package/lib/commands/list.js +109 -22
  3. package/lib/commands/skills.js +1 -3
  4. package/lib/config.js +1 -0
  5. package/lib/prompts/checkboxCancel.js +0 -6
  6. package/lib/symlink.js +1 -1
  7. package/package.json +4 -2
  8. package/skills/seo-launch/SKILL.md +91 -0
  9. package/skills/seo-launch/assets/head.php +85 -0
  10. package/skills/seo-launch/assets/htaccess-static +86 -0
  11. package/skills/seo-launch/assets/robots.txt +17 -0
  12. package/skills/seo-launch/assets/social-meta.blade.php +90 -0
  13. package/skills/seo-launch/references/head-tags.md +109 -0
  14. package/skills/seo-launch/references/images.md +86 -0
  15. package/skills/seo-launch/references/search-engines.md +77 -0
  16. package/skills/seo-launch/references/server-files.md +168 -0
  17. package/skills/seo-launch/references/structured-data.md +139 -0
  18. package/skills/seo-launch/scripts/__pycache__/auditar_seo.cpython-312.pyc +0 -0
  19. package/skills/seo-launch/scripts/auditar_seo.py +539 -0
  20. package/skills/stitch-showcase/references/12-video-embedding.md +11 -28
  21. package/skills/stitch-showcase/references/13-language-detection.md +13 -38
  22. package/skills/stitch-showcase/scripts/__pycache__/build_showcase.cpython-314.pyc +0 -0
  23. package/skills/stitch-showcase/scripts/__pycache__/component_utils.cpython-313.pyc +0 -0
  24. package/skills/stitch-showcase/scripts/__pycache__/component_utils.cpython-314.pyc +0 -0
  25. package/skills/stitch-showcase/scripts/__pycache__/detect_components.cpython-313.pyc +0 -0
  26. package/skills/stitch-showcase/scripts/__pycache__/detect_components.cpython-314.pyc +0 -0
  27. package/skills/stitch-showcase/scripts/__pycache__/extract_catalog.cpython-313.pyc +0 -0
  28. package/skills/stitch-showcase/scripts/__pycache__/extract_catalog.cpython-314.pyc +0 -0
  29. package/skills/stitch-showcase/scripts/__pycache__/extract_text.cpython-313.pyc +0 -0
  30. package/skills/stitch-showcase/scripts/__pycache__/extract_text.cpython-314.pyc +0 -0
  31. package/skills/stitch-showcase/scripts/__pycache__/extract_zips.cpython-313.pyc +0 -0
  32. package/skills/stitch-showcase/scripts/__pycache__/extract_zips.cpython-314.pyc +0 -0
  33. package/skills/stitch-showcase/scripts/__pycache__/parse_design_md.cpython-313.pyc +0 -0
  34. package/skills/stitch-showcase/scripts/__pycache__/parse_design_md.cpython-314.pyc +0 -0
  35. package/skills/stitch-showcase/scripts/__pycache__/slug_demangle.cpython-314.pyc +0 -0
@@ -2,16 +2,11 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- Sometimes a Stitch slot needs to show a video instead of a still image
6
- (product demo, animated logo, looping background, recorded screen). This
7
- document captures the exact pattern that works across browsers and avoids
8
- the common pitfalls — content recropping, layout shift, AV1 codec, and
9
- aspect-ratio mismatch with the original wrapper.
5
+ Sometimes a Stitch slot needs to show a video instead of a still image (product demo, animated logo, looping background, recorded screen). This document captures the exact pattern that works across browsers and avoids the common pitfalls — content recropping, layout shift, AV1 codec, and aspect-ratio mismatch with the original wrapper.
10
6
 
11
7
  ## The Tag
12
8
 
13
- Use a plain `<video>` element with native `width` and `height` attributes
14
- plus inline styling for safe defaults:
9
+ Use a plain `<video>` element with native `width` and `height` attributes plus inline styling for safe defaults:
15
10
 
16
11
  ```html
17
12
  <video
@@ -27,8 +22,7 @@ plus inline styling for safe defaults:
27
22
  </video>
28
23
  ```
29
24
 
30
- Replace `W` / `H` with the **native** video dimensions and `<slug>` with
31
- the screen slug (or whatever filename you used inside `videos/`).
25
+ Replace `W` / `H` with the **native** video dimensions and `<slug>` with the screen slug (or whatever filename you used inside `videos/`).
32
26
 
33
27
  ### Why each attribute
34
28
 
@@ -43,15 +37,13 @@ the screen slug (or whatever filename you used inside `videos/`).
43
37
 
44
38
  ## File Workflow
45
39
 
46
- 1. **Download** the source video. For Facebook/Instagram/YouTube/TikTok we
47
- recommend `yt-dlp`:
40
+ 1. **Download** the source video. For Facebook/Instagram/YouTube/TikTok we recommend `yt-dlp`:
48
41
 
49
42
  ```bash
50
43
  yt-dlp "https://www.facebook.com/<...>/videos/<id>" -o "videos/<slug>.%(ext)s"
51
44
  ```
52
45
 
53
- 2. **Re-encode to H.264** if the source comes down as AV1. AV1 doesn't
54
- preview in macOS Finder and is rejected by Safari < 17:
46
+ 2. **Re-encode to H.264** if the source comes down as AV1. AV1 doesn't preview in macOS Finder and is rejected by Safari < 17:
55
47
 
56
48
  ```bash
57
49
  ffmpeg -i in.mp4 \
@@ -63,12 +55,9 @@ the screen slug (or whatever filename you used inside `videos/`).
63
55
 
64
56
  - `-preset fast`: balanced speed/quality.
65
57
  - `-crf 23`: visually-lossless default; lower number = bigger file.
66
- - `-movflags +faststart`: moves the moov atom to the front so the video
67
- can start playing before fully downloaded.
58
+ - `-movflags +faststart`: moves the moov atom to the front so the video can start playing before fully downloaded.
68
59
 
69
- 3. **Place** the encoded `.mp4` in a `videos/` folder at the **project
70
- level** (the same level as `stitch/` or `showcase/`, not inside
71
- `assets/`), so the build keeps it out of the screen-extraction pipeline:
60
+ 3. **Place** the encoded `.mp4` in a `videos/` folder at the **project level** (the same level as `stitch/` or `showcase/`, not inside `assets/`), so the build keeps it out of the screen-extraction pipeline:
72
61
 
73
62
  ```text
74
63
  my-project/
@@ -80,8 +69,7 @@ the screen slug (or whatever filename you used inside `videos/`).
80
69
  └── <slug>.html ← references ../../videos/hero.mp4
81
70
  ```
82
71
 
83
- 4. **Reference from the screen HTML** with a relative path. From inside
84
- `showcase/assets/<slug>.html`, `videos/` is two levels up:
72
+ 4. **Reference from the screen HTML** with a relative path. From inside `showcase/assets/<slug>.html`, `videos/` is two levels up:
85
73
 
86
74
  ```html
87
75
  <source src="../../videos/hero.mp4" type="video/mp4">
@@ -89,18 +77,14 @@ the screen slug (or whatever filename you used inside `videos/`).
89
77
 
90
78
  ## Aspect-Ratio Mismatch
91
79
 
92
- The original Stitch wrapper for a video slot usually carries a fixed
93
- aspect ratio (e.g. `aspect-[4/5]`). If your video is a different shape —
94
- say 9/16 — keeping the wrapper's aspect locks the video into the wrong
95
- box, which then forces a choice:
80
+ The original Stitch wrapper for a video slot usually carries a fixed aspect ratio (e.g. `aspect-[4/5]`). If your video is a different shape — say 9/16 — keeping the wrapper's aspect locks the video into the wrong box, which then forces a choice:
96
81
 
97
82
  | Option | Effect |
98
83
  |--------|--------|
99
84
  | Keep wrapper's `aspect-*` + `object-cover` | Video crops; logos and edges get chopped. |
100
85
  | **Remove wrapper's `aspect-*` + `height:auto`** | Video keeps its native aspect; the slot grows or shrinks vertically to fit. ✅ |
101
86
 
102
- The second option is almost always what you want — better to have a
103
- slightly taller card than to chop the brand logo out of the frame.
87
+ The second option is almost always what you want — better to have a slightly taller card than to chop the brand logo out of the frame.
104
88
 
105
89
  ## Quick Sanity Checks
106
90
 
@@ -109,5 +93,4 @@ After embedding, open the screen in a browser and confirm:
109
93
  - The video autoplays without a tap on Chrome, Safari, and Firefox.
110
94
  - The video loops cleanly (no flash on rewind).
111
95
  - On mobile (iOS Safari), it autoplays silently inline (not fullscreen).
112
- - The file size is reasonable — re-encode with a higher `-crf` if it's
113
- more than ~3-5 MB per 10 seconds.
96
+ - The file size is reasonable — re-encode with a higher `-crf` if it's more than ~3-5 MB per 10 seconds.
@@ -2,19 +2,13 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- The `<html lang="…">` attribute on the generated `index.html` and
6
- `viewer.html` tells the browser which natural language the content uses.
7
- If the value disagrees with the actual content, Chrome shows a "Translate
8
- this page" banner and assistive technologies pronounce words with the
9
- wrong phoneme set. This document explains how the build picks the value
10
- and how to override it.
5
+ The `<html lang="…">` attribute on the generated `index.html` and `viewer.html` tells the browser which natural language the content uses. If the value disagrees with the actual content, Chrome shows a "Translate this page" banner and assistive technologies pronounce words with the wrong phoneme set. This document explains how the build picks the value and how to override it.
11
6
 
12
7
  ## Resolution Order
13
8
 
14
9
  The `lang` attribute is chosen by the first rule that fires:
15
10
 
16
- 1. **CLI flag** (future — not implemented yet): `--lang es` on
17
- `build_showcase.py`.
11
+ 1. **CLI flag** (future — not implemented yet): `--lang es` on `build_showcase.py`.
18
12
  2. **`showcase.json` field**:
19
13
 
20
14
  ```json
@@ -33,50 +27,31 @@ The `lang` attribute is chosen by the first rule that fires:
33
27
  es
34
28
  ```
35
29
 
36
- 4. **Auto-detection** from the text content of `DESIGN.md` (project name,
37
- section names, descriptions). The detector counts Spanish signals:
30
+ 4. **Auto-detection** from the text content of `DESIGN.md` (project name, section names, descriptions). The detector counts Spanish signals:
38
31
 
39
32
  - Accented characters (`á é í ó ú ñ`).
40
- - Common Spanish stop words (`de`, `el`, `la`, `los`, `las`, `para`,
41
- `con`, `pantalla`, `aplicación`, `usuario`, etc.).
33
+ - Common Spanish stop words (`de`, `el`, `la`, `los`, `las`, `para`, `con`, `pantalla`, `aplicación`, `usuario`, etc.).
42
34
 
43
- If the Spanish score crosses a small threshold, the lang resolves to
44
- `"es"`; otherwise it falls through.
35
+ If the Spanish score crosses a small threshold, the lang resolves to `"es"`; otherwise it falls through.
45
36
 
46
37
  5. **Default**: `"en"`.
47
38
 
48
39
  ## When to Override
49
40
 
50
- The auto-detector handles obvious cases (a project whose DESIGN.md is
51
- entirely Spanish or entirely English), but it can be fooled by very
52
- short DESIGN.md files or by projects where the UI language differs from
53
- the documentation language. Use an explicit override when:
41
+ The auto-detector handles obvious cases (a project whose DESIGN.md is entirely Spanish or entirely English), but it can be fooled by very short DESIGN.md files or by projects where the UI language differs from the documentation language. Use an explicit override when:
54
42
 
55
- - The DESIGN.md is in English but the actual screen content is Spanish
56
- (you'd be documenting an es-MX app in English for a client).
43
+ - The DESIGN.md is in English but the actual screen content is Spanish (you'd be documenting an es-MX app in English for a client).
57
44
  - The DESIGN.md is sparse and the heuristic has nothing to score on.
58
- - You want a non-Spanish, non-English language (`pt`, `fr`, `de` …) —
59
- the auto-detector only distinguishes Spanish vs everything else.
45
+ - You want a non-Spanish, non-English language (`pt`, `fr`, `de` …) — the auto-detector only distinguishes Spanish vs everything else.
60
46
 
61
47
  ## Why It Matters
62
48
 
63
- - **Chrome's translate prompt**: with `lang="en"` and Spanish content,
64
- Chrome offers to translate the page to the user's locale. Users
65
- perceive this as a bug.
66
- - **Screen readers**: VoiceOver and TalkBack switch pronunciation
67
- engines per `lang`. A wrong value makes Spanish text sound like a
68
- speech synthesizer trying to pronounce "configuración" as English.
69
- - **Search engines**: the `lang` attribute is a soft signal but it's
70
- read by indexers when ranking pages by locale.
49
+ - **Chrome's translate prompt**: with `lang="en"` and Spanish content, Chrome offers to translate the page to the user's locale. Users perceive this as a bug.
50
+ - **Screen readers**: VoiceOver and TalkBack switch pronunciation engines per `lang`. A wrong value makes Spanish text sound like a speech synthesizer trying to pronounce "configuración" as English.
51
+ - **Search engines**: the `lang` attribute is a soft signal but it's read by indexers when ranking pages by locale.
71
52
 
72
53
  ## Common Mistake: Mismatched Lang and Content
73
54
 
74
- The previous template hard-coded `lang="en"` even for Spanish-only
75
- projects. The fix wasn't to flip the default to `"es"` (that just moves
76
- the bug to English projects) — it was to detect or accept an override.
77
- The same logic now lives in `parse_design_md.py` (`_detect_lang`) and
78
- `build_showcase.py` (the `{{HTML_LANG}}` placeholder substitution).
55
+ The previous template hard-coded `lang="en"` even for Spanish-only projects. The fix wasn't to flip the default to `"es"` (that just moves the bug to English projects) — it was to detect or accept an override. The same logic now lives in `parse_design_md.py` (`_detect_lang`) and `build_showcase.py` (the `{{HTML_LANG}}` placeholder substitution).
79
56
 
80
- If you ever see Chrome offering to translate one of your showcases:
81
- that's the signal that the resolved `lang` is wrong. Add an override to
82
- `showcase.json` or `DESIGN.md` and rebuild.
57
+ If you ever see Chrome offering to translate one of your showcases: that's the signal that the resolved `lang` is wrong. Add an override to `showcase.json` or `DESIGN.md` and rebuild.