neoagent 2.1.18-beta.32 → 2.1.18-beta.33
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/package.json +1 -1
- package/server/catalog_sources/store-bundles/README.md +5 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-art/SKILL.md +321 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/README.md +290 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/SKILL.md +205 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/architecture.md +802 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/composition.md +892 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/effects.md +1865 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/inputs.md +685 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/optimization.md +688 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/scenes.md +1011 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/shaders.md +1385 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/troubleshooting.md +367 -0
- package/server/catalog_sources/store-bundles/skills/creative/excalidraw/SKILL.md +194 -0
- package/server/catalog_sources/store-bundles/skills/creative/excalidraw/references/colors.md +44 -0
- package/server/catalog_sources/store-bundles/skills/creative/excalidraw/references/dark-mode.md +68 -0
- package/server/catalog_sources/store-bundles/skills/creative/excalidraw/references/examples.md +141 -0
- package/server/catalog_sources/store-bundles/skills/creative/excalidraw/scripts/upload.py +133 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/README.md +23 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/SKILL.md +241 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/animation-design-thinking.md +161 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/animations.md +282 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/camera-and-3d.md +135 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/decorations.md +202 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/equations.md +216 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/graphs-and-data.md +163 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/mobjects.md +333 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/paper-explainer.md +255 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/production-quality.md +190 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/rendering.md +185 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/scene-planning.md +118 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/troubleshooting.md +135 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/updaters-and-trackers.md +260 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/visual-design.md +124 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/scripts/setup.sh +14 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/README.md +64 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/SKILL.md +513 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/animation.md +439 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/color-systems.md +352 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/core-api.md +410 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/export-pipeline.md +566 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/interaction.md +398 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/shapes-and-geometry.md +300 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/troubleshooting.md +532 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/typography.md +302 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/visual-effects.md +895 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/webgl-and-3d.md +423 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/scripts/export-frames.js +179 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/scripts/render.sh +108 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/scripts/serve.sh +28 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/scripts/setup.sh +87 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/templates/viewer.html +395 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/SKILL.md +207 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/airbnb.md +259 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/airtable.md +102 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/apple.md +326 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/bmw.md +193 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/cal.md +272 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/claude.md +325 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/clay.md +317 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/clickhouse.md +294 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/cohere.md +279 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/coinbase.md +142 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/composio.md +320 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/cursor.md +322 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/elevenlabs.md +278 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/expo.md +294 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/figma.md +233 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/framer.md +259 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/hashicorp.md +291 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/ibm.md +345 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/intercom.md +159 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/kraken.md +138 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/linear.app.md +380 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/lovable.md +311 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/minimax.md +270 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/mintlify.md +339 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/miro.md +121 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/mistral.ai.md +274 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/mongodb.md +279 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/notion.md +322 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/nvidia.md +306 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/ollama.md +280 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/opencode.ai.md +294 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/pinterest.md +243 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/posthog.md +269 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/raycast.md +281 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/replicate.md +274 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/resend.md +316 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/revolut.md +198 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/runwayml.md +257 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/sanity.md +370 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/sentry.md +275 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/spacex.md +207 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/spotify.md +259 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/stripe.md +335 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/supabase.md +268 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/superhuman.md +265 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/together.ai.md +276 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/uber.md +308 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/vercel.md +323 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/voltagent.md +336 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/warp.md +266 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/webflow.md +105 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/wise.md +186 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/x.ai.md +270 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/zapier.md +341 -0
- package/server/catalog_sources/store-bundles/skills/creative/songwriting-and-ai-music/SKILL.md +289 -0
- package/server/catalog_sources/store-bundles/skills/data-science/jupyter-live-kernel/SKILL.md +171 -0
- package/server/catalog_sources/store-bundles/skills/email/himalaya/SKILL.md +278 -0
- package/server/catalog_sources/store-bundles/skills/email/himalaya/references/configuration.md +184 -0
- package/server/catalog_sources/store-bundles/skills/email/himalaya/references/message-composition.md +199 -0
- package/server/catalog_sources/store-bundles/skills/github/codebase-inspection/SKILL.md +115 -0
- package/server/catalog_sources/store-bundles/skills/github/github-auth/SKILL.md +246 -0
- package/server/catalog_sources/store-bundles/skills/github/github-auth/scripts/gh-env.sh +66 -0
- package/server/catalog_sources/store-bundles/skills/github/github-code-review/SKILL.md +480 -0
- package/server/catalog_sources/store-bundles/skills/github/github-code-review/references/review-output-template.md +74 -0
- package/server/catalog_sources/store-bundles/skills/github/github-issues/SKILL.md +369 -0
- package/server/catalog_sources/store-bundles/skills/github/github-issues/templates/bug-report.md +35 -0
- package/server/catalog_sources/store-bundles/skills/github/github-issues/templates/feature-request.md +31 -0
- package/server/catalog_sources/store-bundles/skills/github/github-pr-workflow/SKILL.md +366 -0
- package/server/catalog_sources/store-bundles/skills/github/github-pr-workflow/references/ci-troubleshooting.md +183 -0
- package/server/catalog_sources/store-bundles/skills/github/github-pr-workflow/references/conventional-commits.md +71 -0
- package/server/catalog_sources/store-bundles/skills/github/github-pr-workflow/templates/pr-body-bugfix.md +35 -0
- package/server/catalog_sources/store-bundles/skills/github/github-pr-workflow/templates/pr-body-feature.md +33 -0
- package/server/catalog_sources/store-bundles/skills/github/github-repo-management/SKILL.md +515 -0
- package/server/catalog_sources/store-bundles/skills/github/github-repo-management/references/github-api-cheatsheet.md +161 -0
- package/server/catalog_sources/store-bundles/skills/leisure/find-nearby/SKILL.md +69 -0
- package/server/catalog_sources/store-bundles/skills/leisure/find-nearby/scripts/find_nearby.py +184 -0
- package/server/catalog_sources/store-bundles/skills/mcp/mcporter/SKILL.md +122 -0
- package/server/catalog_sources/store-bundles/skills/mcp/native-mcp/SKILL.md +356 -0
- package/server/catalog_sources/store-bundles/skills/media/gif-search/SKILL.md +86 -0
- package/server/catalog_sources/store-bundles/skills/media/youtube-content/SKILL.md +72 -0
- package/server/catalog_sources/store-bundles/skills/media/youtube-content/references/output-formats.md +56 -0
- package/server/catalog_sources/store-bundles/skills/media/youtube-content/scripts/fetch_transcript.py +124 -0
- package/server/catalog_sources/store-bundles/skills/note-taking/obsidian/SKILL.md +66 -0
- package/server/catalog_sources/store-bundles/skills/productivity/google-workspace/SKILL.md +261 -0
- package/server/catalog_sources/store-bundles/skills/productivity/google-workspace/references/gmail-search-syntax.md +63 -0
- package/server/catalog_sources/store-bundles/skills/productivity/google-workspace/scripts/google_api.py +519 -0
- package/server/catalog_sources/store-bundles/skills/productivity/google-workspace/scripts/setup.py +363 -0
- package/server/catalog_sources/store-bundles/skills/productivity/linear/SKILL.md +297 -0
- package/server/catalog_sources/store-bundles/skills/productivity/nano-pdf/SKILL.md +51 -0
- package/server/catalog_sources/store-bundles/skills/productivity/notion/SKILL.md +171 -0
- package/server/catalog_sources/store-bundles/skills/productivity/notion/references/block-types.md +112 -0
- package/server/catalog_sources/store-bundles/skills/productivity/ocr-and-documents/DESCRIPTION.md +3 -0
- package/server/catalog_sources/store-bundles/skills/productivity/ocr-and-documents/SKILL.md +171 -0
- package/server/catalog_sources/store-bundles/skills/productivity/ocr-and-documents/scripts/extract_marker.py +87 -0
- package/server/catalog_sources/store-bundles/skills/productivity/ocr-and-documents/scripts/extract_pymupdf.py +98 -0
- package/server/catalog_sources/store-bundles/skills/research/arxiv/SKILL.md +281 -0
- package/server/catalog_sources/store-bundles/skills/research/arxiv/scripts/search_arxiv.py +114 -0
- package/server/catalog_sources/store-bundles/skills/research/blogwatcher/SKILL.md +136 -0
- package/server/catalog_sources/store-bundles/skills/research/llm-wiki/SKILL.md +460 -0
- package/server/catalog_sources/store-bundles/skills/research/polymarket/SKILL.md +76 -0
- package/server/catalog_sources/store-bundles/skills/research/polymarket/references/api-endpoints.md +220 -0
- package/server/catalog_sources/store-bundles/skills/research/polymarket/scripts/polymarket.py +284 -0
- package/server/catalog_sources/store-bundles/skills/software-development/plan/SKILL.md +57 -0
- package/server/catalog_sources/store-bundles/skills/software-development/requesting-code-review/SKILL.md +282 -0
- package/server/catalog_sources/store-bundles/skills/software-development/subagent-driven-development/SKILL.md +342 -0
- package/server/catalog_sources/store-bundles/skills/software-development/systematic-debugging/SKILL.md +366 -0
- package/server/catalog_sources/store-bundles/skills/software-development/test-driven-development/SKILL.md +342 -0
- package/server/catalog_sources/store-bundles/skills/software-development/writing-plans/SKILL.md +296 -0
- package/server/db/database.js +35 -0
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +70719 -69554
- package/server/routes/account.js +61 -8
- package/server/routes/auth.js +149 -30
- package/server/routes/integrations.js +40 -2
- package/server/routes/skills.js +7 -23
- package/server/routes/store.js +42 -1212
- package/server/services/account/auth_provider_manager.js +436 -0
- package/server/services/account/auth_providers/google.js +102 -0
- package/server/services/account/auth_providers/registry.js +23 -0
- package/server/services/account/password_policy.js +133 -0
- package/server/services/ai/engine.js +8 -1
- package/server/services/ai/toolRunner.js +45 -7
- package/server/services/manager.js +12 -0
- package/server/services/skills/base_catalog.js +1167 -0
- package/server/services/skills/catalog.js +10 -0
- package/server/services/skills/runtime.js +36 -0
- package/server/services/skills/store_bundles.js +157 -0
- package/server/services/skills/store_service.js +266 -0
package/package.json
CHANGED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
Bundled skill sources for the NeoAgent store.
|
|
2
|
+
|
|
3
|
+
These files are kept as local install sources so the store can install bundled
|
|
4
|
+
skills without depending on runtime network access. The active catalog subset is
|
|
5
|
+
defined in [server/services/skills/store_bundles.js](/Users/neo/NeoAgent/server/services/skills/store_bundles.js).
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ascii-art
|
|
3
|
+
description: Generate ASCII art using pyfiglet (571 fonts), cowsay, boxes, toilet, image-to-ascii, remote APIs (asciified, ascii.co.uk), and LLM fallback. No API keys required.
|
|
4
|
+
version: 4.0.0
|
|
5
|
+
author: 0xbyt4, Hermes Agent
|
|
6
|
+
license: MIT
|
|
7
|
+
dependencies: []
|
|
8
|
+
metadata:
|
|
9
|
+
hermes:
|
|
10
|
+
tags: [ASCII, Art, Banners, Creative, Unicode, Text-Art, pyfiglet, figlet, cowsay, boxes]
|
|
11
|
+
related_skills: [excalidraw]
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# ASCII Art Skill
|
|
16
|
+
|
|
17
|
+
Multiple tools for different ASCII art needs. All tools are local CLI programs or free REST APIs — no API keys required.
|
|
18
|
+
|
|
19
|
+
## Tool 1: Text Banners (pyfiglet — local)
|
|
20
|
+
|
|
21
|
+
Render text as large ASCII art banners. 571 built-in fonts.
|
|
22
|
+
|
|
23
|
+
### Setup
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pip install pyfiglet --break-system-packages -q
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Usage
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
python3 -m pyfiglet "YOUR TEXT" -f slant
|
|
33
|
+
python3 -m pyfiglet "TEXT" -f doom -w 80 # Set width
|
|
34
|
+
python3 -m pyfiglet --list_fonts # List all 571 fonts
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Recommended fonts
|
|
38
|
+
|
|
39
|
+
| Style | Font | Best for |
|
|
40
|
+
|-------|------|----------|
|
|
41
|
+
| Clean & modern | `slant` | Project names, headers |
|
|
42
|
+
| Bold & blocky | `doom` | Titles, logos |
|
|
43
|
+
| Big & readable | `big` | Banners |
|
|
44
|
+
| Classic banner | `banner3` | Wide displays |
|
|
45
|
+
| Compact | `small` | Subtitles |
|
|
46
|
+
| Cyberpunk | `cyberlarge` | Tech themes |
|
|
47
|
+
| 3D effect | `3-d` | Splash screens |
|
|
48
|
+
| Gothic | `gothic` | Dramatic text |
|
|
49
|
+
|
|
50
|
+
### Tips
|
|
51
|
+
|
|
52
|
+
- Preview 2-3 fonts and let the user pick their favorite
|
|
53
|
+
- Short text (1-8 chars) works best with detailed fonts like `doom` or `block`
|
|
54
|
+
- Long text works better with compact fonts like `small` or `mini`
|
|
55
|
+
|
|
56
|
+
## Tool 2: Text Banners (asciified API — remote, no install)
|
|
57
|
+
|
|
58
|
+
Free REST API that converts text to ASCII art. 250+ FIGlet fonts. Returns plain text directly — no parsing needed. Use this when pyfiglet is not installed or as a quick alternative.
|
|
59
|
+
|
|
60
|
+
### Usage (via terminal curl)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Basic text banner (default font)
|
|
64
|
+
curl -s "https://asciified.thelicato.io/api/v2/ascii?text=Hello+World"
|
|
65
|
+
|
|
66
|
+
# With a specific font
|
|
67
|
+
curl -s "https://asciified.thelicato.io/api/v2/ascii?text=Hello&font=Slant"
|
|
68
|
+
curl -s "https://asciified.thelicato.io/api/v2/ascii?text=Hello&font=Doom"
|
|
69
|
+
curl -s "https://asciified.thelicato.io/api/v2/ascii?text=Hello&font=Star+Wars"
|
|
70
|
+
curl -s "https://asciified.thelicato.io/api/v2/ascii?text=Hello&font=3-D"
|
|
71
|
+
curl -s "https://asciified.thelicato.io/api/v2/ascii?text=Hello&font=Banner3"
|
|
72
|
+
|
|
73
|
+
# List all available fonts (returns JSON array)
|
|
74
|
+
curl -s "https://asciified.thelicato.io/api/v2/fonts"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Tips
|
|
78
|
+
|
|
79
|
+
- URL-encode spaces as `+` in the text parameter
|
|
80
|
+
- The response is plain text ASCII art — no JSON wrapping, ready to display
|
|
81
|
+
- Font names are case-sensitive; use the fonts endpoint to get exact names
|
|
82
|
+
- Works from any terminal with curl — no Python or pip needed
|
|
83
|
+
|
|
84
|
+
## Tool 3: Cowsay (Message Art)
|
|
85
|
+
|
|
86
|
+
Classic tool that wraps text in a speech bubble with an ASCII character.
|
|
87
|
+
|
|
88
|
+
### Setup
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
sudo apt install cowsay -y # Debian/Ubuntu
|
|
92
|
+
# brew install cowsay # macOS
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Usage
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
cowsay "Hello World"
|
|
99
|
+
cowsay -f tux "Linux rules" # Tux the penguin
|
|
100
|
+
cowsay -f dragon "Rawr!" # Dragon
|
|
101
|
+
cowsay -f stegosaurus "Roar!" # Stegosaurus
|
|
102
|
+
cowthink "Hmm..." # Thought bubble
|
|
103
|
+
cowsay -l # List all characters
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Available characters (50+)
|
|
107
|
+
|
|
108
|
+
`beavis.zen`, `bong`, `bunny`, `cheese`, `daemon`, `default`, `dragon`,
|
|
109
|
+
`dragon-and-cow`, `elephant`, `eyes`, `flaming-skull`, `ghostbusters`,
|
|
110
|
+
`hellokitty`, `kiss`, `kitty`, `koala`, `luke-koala`, `mech-and-cow`,
|
|
111
|
+
`meow`, `moofasa`, `moose`, `ren`, `sheep`, `skeleton`, `small`,
|
|
112
|
+
`stegosaurus`, `stimpy`, `supermilker`, `surgery`, `three-eyes`,
|
|
113
|
+
`turkey`, `turtle`, `tux`, `udder`, `vader`, `vader-koala`, `www`
|
|
114
|
+
|
|
115
|
+
### Eye/tongue modifiers
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
cowsay -b "Borg" # =_= eyes
|
|
119
|
+
cowsay -d "Dead" # x_x eyes
|
|
120
|
+
cowsay -g "Greedy" # $_$ eyes
|
|
121
|
+
cowsay -p "Paranoid" # @_@ eyes
|
|
122
|
+
cowsay -s "Stoned" # *_* eyes
|
|
123
|
+
cowsay -w "Wired" # O_O eyes
|
|
124
|
+
cowsay -e "OO" "Msg" # Custom eyes
|
|
125
|
+
cowsay -T "U " "Msg" # Custom tongue
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Tool 4: Boxes (Decorative Borders)
|
|
129
|
+
|
|
130
|
+
Draw decorative ASCII art borders/frames around any text. 70+ built-in designs.
|
|
131
|
+
|
|
132
|
+
### Setup
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
sudo apt install boxes -y # Debian/Ubuntu
|
|
136
|
+
# brew install boxes # macOS
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Usage
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
echo "Hello World" | boxes # Default box
|
|
143
|
+
echo "Hello World" | boxes -d stone # Stone border
|
|
144
|
+
echo "Hello World" | boxes -d parchment # Parchment scroll
|
|
145
|
+
echo "Hello World" | boxes -d cat # Cat border
|
|
146
|
+
echo "Hello World" | boxes -d dog # Dog border
|
|
147
|
+
echo "Hello World" | boxes -d unicornsay # Unicorn
|
|
148
|
+
echo "Hello World" | boxes -d diamonds # Diamond pattern
|
|
149
|
+
echo "Hello World" | boxes -d c-cmt # C-style comment
|
|
150
|
+
echo "Hello World" | boxes -d html-cmt # HTML comment
|
|
151
|
+
echo "Hello World" | boxes -a c # Center text
|
|
152
|
+
boxes -l # List all 70+ designs
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Combine with pyfiglet or asciified
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
python3 -m pyfiglet "HERMES" -f slant | boxes -d stone
|
|
159
|
+
# Or without pyfiglet installed:
|
|
160
|
+
curl -s "https://asciified.thelicato.io/api/v2/ascii?text=HERMES&font=Slant" | boxes -d stone
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Tool 5: TOIlet (Colored Text Art)
|
|
164
|
+
|
|
165
|
+
Like pyfiglet but with ANSI color effects and visual filters. Great for terminal eye candy.
|
|
166
|
+
|
|
167
|
+
### Setup
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
sudo apt install toilet toilet-fonts -y # Debian/Ubuntu
|
|
171
|
+
# brew install toilet # macOS
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Usage
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
toilet "Hello World" # Basic text art
|
|
178
|
+
toilet -f bigmono12 "Hello" # Specific font
|
|
179
|
+
toilet --gay "Rainbow!" # Rainbow coloring
|
|
180
|
+
toilet --metal "Metal!" # Metallic effect
|
|
181
|
+
toilet -F border "Bordered" # Add border
|
|
182
|
+
toilet -F border --gay "Fancy!" # Combined effects
|
|
183
|
+
toilet -f pagga "Block" # Block-style font (unique to toilet)
|
|
184
|
+
toilet -F list # List available filters
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Filters
|
|
188
|
+
|
|
189
|
+
`crop`, `gay` (rainbow), `metal`, `flip`, `flop`, `180`, `left`, `right`, `border`
|
|
190
|
+
|
|
191
|
+
**Note**: toilet outputs ANSI escape codes for colors — works in terminals but may not render in all contexts (e.g., plain text files, some chat platforms).
|
|
192
|
+
|
|
193
|
+
## Tool 6: Image to ASCII Art
|
|
194
|
+
|
|
195
|
+
Convert images (PNG, JPEG, GIF, WEBP) to ASCII art.
|
|
196
|
+
|
|
197
|
+
### Option A: ascii-image-converter (recommended, modern)
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# Install
|
|
201
|
+
sudo snap install ascii-image-converter
|
|
202
|
+
# OR: go install github.com/TheZoraiz/ascii-image-converter@latest
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
ascii-image-converter image.png # Basic
|
|
207
|
+
ascii-image-converter image.png -C # Color output
|
|
208
|
+
ascii-image-converter image.png -d 60,30 # Set dimensions
|
|
209
|
+
ascii-image-converter image.png -b # Braille characters
|
|
210
|
+
ascii-image-converter image.png -n # Negative/inverted
|
|
211
|
+
ascii-image-converter https://url/image.jpg # Direct URL
|
|
212
|
+
ascii-image-converter image.png --save-txt out # Save as text
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Option B: jp2a (lightweight, JPEG only)
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
sudo apt install jp2a -y
|
|
219
|
+
jp2a --width=80 image.jpg
|
|
220
|
+
jp2a --colors image.jpg # Colorized
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Tool 7: Search Pre-Made ASCII Art
|
|
224
|
+
|
|
225
|
+
Search curated ASCII art from the web. Use `terminal` with `curl`.
|
|
226
|
+
|
|
227
|
+
### Source A: ascii.co.uk (recommended for pre-made art)
|
|
228
|
+
|
|
229
|
+
Large collection of classic ASCII art organized by subject. Art is inside HTML `<pre>` tags. Fetch the page with curl, then extract art with a small Python snippet.
|
|
230
|
+
|
|
231
|
+
**URL pattern:** `https://ascii.co.uk/art/{subject}`
|
|
232
|
+
|
|
233
|
+
**Step 1 — Fetch the page:**
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
curl -s 'https://ascii.co.uk/art/cat' -o /tmp/ascii_art.html
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Step 2 — Extract art from pre tags:**
|
|
240
|
+
|
|
241
|
+
```python
|
|
242
|
+
import re, html
|
|
243
|
+
with open('/tmp/ascii_art.html') as f:
|
|
244
|
+
text = f.read()
|
|
245
|
+
arts = re.findall(r'<pre[^>]*>(.*?)</pre>', text, re.DOTALL)
|
|
246
|
+
for art in arts:
|
|
247
|
+
clean = re.sub(r'<[^>]+>', '', art)
|
|
248
|
+
clean = html.unescape(clean).strip()
|
|
249
|
+
if len(clean) > 30:
|
|
250
|
+
print(clean)
|
|
251
|
+
print('\n---\n')
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**Available subjects** (use as URL path):
|
|
255
|
+
- Animals: `cat`, `dog`, `horse`, `bird`, `fish`, `dragon`, `snake`, `rabbit`, `elephant`, `dolphin`, `butterfly`, `owl`, `wolf`, `bear`, `penguin`, `turtle`
|
|
256
|
+
- Objects: `car`, `ship`, `airplane`, `rocket`, `guitar`, `computer`, `coffee`, `beer`, `cake`, `house`, `castle`, `sword`, `crown`, `key`
|
|
257
|
+
- Nature: `tree`, `flower`, `sun`, `moon`, `star`, `mountain`, `ocean`, `rainbow`
|
|
258
|
+
- Characters: `skull`, `robot`, `angel`, `wizard`, `pirate`, `ninja`, `alien`
|
|
259
|
+
- Holidays: `christmas`, `halloween`, `valentine`
|
|
260
|
+
|
|
261
|
+
**Tips:**
|
|
262
|
+
- Preserve artist signatures/initials — important etiquette
|
|
263
|
+
- Multiple art pieces per page — pick the best one for the user
|
|
264
|
+
- Works reliably via curl, no JavaScript needed
|
|
265
|
+
|
|
266
|
+
### Source B: GitHub Octocat API (fun easter egg)
|
|
267
|
+
|
|
268
|
+
Returns a random GitHub Octocat with a wise quote. No auth needed.
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
curl -s https://api.github.com/octocat
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Tool 8: Fun ASCII Utilities (via curl)
|
|
275
|
+
|
|
276
|
+
These free services return ASCII art directly — great for fun extras.
|
|
277
|
+
|
|
278
|
+
### QR Codes as ASCII Art
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
curl -s "qrenco.de/Hello+World"
|
|
282
|
+
curl -s "qrenco.de/https://example.com"
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Weather as ASCII Art
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
curl -s "wttr.in/London" # Full weather report with ASCII graphics
|
|
289
|
+
curl -s "wttr.in/Moon" # Moon phase in ASCII art
|
|
290
|
+
curl -s "v2.wttr.in/London" # Detailed version
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## Tool 9: LLM-Generated Custom Art (Fallback)
|
|
294
|
+
|
|
295
|
+
When tools above don't have what's needed, generate ASCII art directly using these Unicode characters:
|
|
296
|
+
|
|
297
|
+
### Character Palette
|
|
298
|
+
|
|
299
|
+
**Box Drawing:** `╔ ╗ ╚ ╝ ║ ═ ╠ ╣ ╦ ╩ ╬ ┌ ┐ └ ┘ │ ─ ├ ┤ ┬ ┴ ┼ ╭ ╮ ╰ ╯`
|
|
300
|
+
|
|
301
|
+
**Block Elements:** `░ ▒ ▓ █ ▄ ▀ ▌ ▐ ▖ ▗ ▘ ▝ ▚ ▞`
|
|
302
|
+
|
|
303
|
+
**Geometric & Symbols:** `◆ ◇ ◈ ● ○ ◉ ■ □ ▲ △ ▼ ▽ ★ ☆ ✦ ✧ ◀ ▶ ◁ ▷ ⬡ ⬢ ⌂`
|
|
304
|
+
|
|
305
|
+
### Rules
|
|
306
|
+
|
|
307
|
+
- Max width: 60 characters per line (terminal-safe)
|
|
308
|
+
- Max height: 15 lines for banners, 25 for scenes
|
|
309
|
+
- Monospace only: output must render correctly in fixed-width fonts
|
|
310
|
+
|
|
311
|
+
## Decision Flow
|
|
312
|
+
|
|
313
|
+
1. **Text as a banner** → pyfiglet if installed, otherwise asciified API via curl
|
|
314
|
+
2. **Wrap a message in fun character art** → cowsay
|
|
315
|
+
3. **Add decorative border/frame** → boxes (can combine with pyfiglet/asciified)
|
|
316
|
+
4. **Art of a specific thing** (cat, rocket, dragon) → ascii.co.uk via curl + parsing
|
|
317
|
+
5. **Convert an image to ASCII** → ascii-image-converter or jp2a
|
|
318
|
+
6. **QR code** → qrenco.de via curl
|
|
319
|
+
7. **Weather/moon art** → wttr.in via curl
|
|
320
|
+
8. **Something custom/creative** → LLM generation with Unicode palette
|
|
321
|
+
9. **Any tool not installed** → install it, or fall back to next option
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# ☤ ASCII Video
|
|
2
|
+
|
|
3
|
+
Renders any content as colored ASCII character video. Audio, video, images, text, or pure math in, MP4/GIF/PNG sequence out. Full RGB color per character cell, 1080p 24fps default. No GPU.
|
|
4
|
+
|
|
5
|
+
Built for [Hermes Agent](https://github.com/NousResearch/hermes-agent). Usable in any coding agent. Canonical source lives here; synced to [`NousResearch/hermes-agent/skills/creative/ascii-video`](https://github.com/NousResearch/hermes-agent/tree/main/skills/creative/ascii-video) via PR.
|
|
6
|
+
|
|
7
|
+
## What this is
|
|
8
|
+
|
|
9
|
+
A skill that teaches an agent how to build single-file Python renderers for ASCII video from scratch. The agent gets the full pipeline: grid system, font rasterization, effect library, shader chain, audio analysis, parallel encoding. It writes the renderer, runs it, gets video.
|
|
10
|
+
|
|
11
|
+
The output is actual video. Not terminal escape codes. Frames are computed as grids of colored characters, composited onto pixel canvases with pre-rasterized font bitmaps, post-processed through shaders, piped to ffmpeg.
|
|
12
|
+
|
|
13
|
+
## Modes
|
|
14
|
+
|
|
15
|
+
| Mode | Input | Output |
|
|
16
|
+
|------|-------|--------|
|
|
17
|
+
| Video-to-ASCII | A video file | ASCII recreation of the footage |
|
|
18
|
+
| Audio-reactive | An audio file | Visuals driven by frequency bands, beats, energy |
|
|
19
|
+
| Generative | Nothing | Procedural animation from math |
|
|
20
|
+
| Hybrid | Video + audio | ASCII video with audio-reactive overlays |
|
|
21
|
+
| Lyrics/text | Audio + timed text (SRT) | Karaoke-style text with effects |
|
|
22
|
+
| TTS narration | Text quotes + API key | Narrated video with typewriter text and generated speech |
|
|
23
|
+
|
|
24
|
+
## Pipeline
|
|
25
|
+
|
|
26
|
+
Every mode follows the same 6-stage path:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
INPUT --> ANALYZE --> SCENE_FN --> TONEMAP --> SHADE --> ENCODE
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
1. **Input** loads source material (or nothing for generative).
|
|
33
|
+
2. **Analyze** extracts per-frame features. Audio gets 6-band FFT, RMS, spectral centroid, flatness, flux, beat detection with exponential decay. Video gets luminance, edges, motion.
|
|
34
|
+
3. **Scene function** returns a pixel canvas directly. Composes multiple character grids at different densities, value/hue fields, pixel blend modes. This is where the visuals happen.
|
|
35
|
+
4. **Tonemap** does adaptive percentile-based brightness normalization with per-scene gamma. ASCII on black is inherently dark. Linear multipliers don't work. This does.
|
|
36
|
+
5. **Shade** runs a `ShaderChain` (38 composable shaders) plus a `FeedbackBuffer` for temporal recursion with spatial transforms.
|
|
37
|
+
6. **Encode** pipes raw RGB frames to ffmpeg for H.264 encoding. Segments concatenated, audio muxed.
|
|
38
|
+
|
|
39
|
+
## Grid system
|
|
40
|
+
|
|
41
|
+
Characters render on fixed-size grids. Layer multiple densities for depth.
|
|
42
|
+
|
|
43
|
+
| Size | Font | Grid at 1080p | Use |
|
|
44
|
+
|------|------|---------------|-----|
|
|
45
|
+
| xs | 8px | 400x108 | Ultra-dense data fields |
|
|
46
|
+
| sm | 10px | 320x83 | Rain, starfields |
|
|
47
|
+
| md | 16px | 192x56 | Default balanced |
|
|
48
|
+
| lg | 20px | 160x45 | Readable text |
|
|
49
|
+
| xl | 24px | 137x37 | Large titles |
|
|
50
|
+
| xxl | 40px | 80x22 | Giant minimal |
|
|
51
|
+
|
|
52
|
+
Rendering the same scene on `sm` and `lg` then screen-blending them creates natural texture interference. Fine detail shows through gaps in coarse characters. Most scenes use two or three grids.
|
|
53
|
+
|
|
54
|
+
## Character palettes (24)
|
|
55
|
+
|
|
56
|
+
Each sorted dark-to-bright, each a different visual texture. Validated against the font at init so broken glyphs get dropped silently.
|
|
57
|
+
|
|
58
|
+
| Family | Examples | Feel |
|
|
59
|
+
|--------|----------|------|
|
|
60
|
+
| Density ramps | ` .:-=+#@█` | Classic ASCII art gradient |
|
|
61
|
+
| Block elements | ` ░▒▓█▄▀▐▌` | Chunky, digital |
|
|
62
|
+
| Braille | ` ⠁⠂⠃...⠿` | Fine-grained pointillism |
|
|
63
|
+
| Dots | ` ⋅∘∙●◉◎` | Smooth, organic |
|
|
64
|
+
| Stars | ` ·✧✦✩✨★✶` | Sparkle, celestial |
|
|
65
|
+
| Half-fills | ` ◔◑◕◐◒◓◖◗◙` | Directional fill progression |
|
|
66
|
+
| Crosshatch | ` ▣▤▥▦▧▨▩` | Hatched density ramp |
|
|
67
|
+
| Math | ` ·∘∙•°±×÷≈≠≡∞∫∑Ω` | Scientific, abstract |
|
|
68
|
+
| Box drawing | ` ─│┌┐└┘├┤┬┴┼` | Structural, circuit-like |
|
|
69
|
+
| Katakana | ` ·ヲァィゥェォャュ...` | Matrix rain |
|
|
70
|
+
| Greek | ` αβγδεζηθ...ω` | Classical, academic |
|
|
71
|
+
| Runes | ` ᚠᚢᚦᚱᚷᛁᛇᛒᛖᛚᛞᛟ` | Mystical, ancient |
|
|
72
|
+
| Alchemical | ` ☉☽♀♂♃♄♅♆♇` | Esoteric |
|
|
73
|
+
| Arrows | ` ←↑→↓↔↕↖↗↘↙` | Directional, kinetic |
|
|
74
|
+
| Music | ` ♪♫♬♩♭♮♯○●` | Musical |
|
|
75
|
+
| Project-specific | ` .·~=≈∞⚡☿✦★⊕◊◆▲▼●■` | Themed per project |
|
|
76
|
+
|
|
77
|
+
Custom palettes are built per project to match the content.
|
|
78
|
+
|
|
79
|
+
## Color strategies
|
|
80
|
+
|
|
81
|
+
| Strategy | How it maps hue | Good for |
|
|
82
|
+
|----------|----------------|----------|
|
|
83
|
+
| Angle-mapped | Position angle from center | Rainbow radial effects |
|
|
84
|
+
| Distance-mapped | Distance from center | Depth, tunnels |
|
|
85
|
+
| Frequency-mapped | Audio spectral centroid | Timbral shifting |
|
|
86
|
+
| Value-mapped | Brightness level | Heat maps, fire |
|
|
87
|
+
| Time-cycled | Slow rotation over time | Ambient, chill |
|
|
88
|
+
| Source-sampled | Original video pixel colors | Video-to-ASCII |
|
|
89
|
+
| Palette-indexed | Discrete lookup table | Retro, flat graphic |
|
|
90
|
+
| Temperature | Warm-to-cool blend | Emotional tone |
|
|
91
|
+
| Complementary | Hue + opposite | Bold, dramatic |
|
|
92
|
+
| Triadic | Three equidistant hues | Psychedelic, vibrant |
|
|
93
|
+
| Analogous | Neighboring hues | Harmonious, subtle |
|
|
94
|
+
| Monochrome | Fixed hue, vary S/V | Noir, focused |
|
|
95
|
+
|
|
96
|
+
Plus 10 discrete RGB palettes (neon, pastel, cyberpunk, vaporwave, earth, ice, blood, forest, mono-green, mono-amber).
|
|
97
|
+
|
|
98
|
+
Full OKLAB/OKLCH color system: sRGB↔linear↔OKLAB conversion pipeline, perceptually uniform gradient interpolation, and color harmony generation (complementary, triadic, analogous, split-complementary, tetradic).
|
|
99
|
+
|
|
100
|
+
## Value field generators (21)
|
|
101
|
+
|
|
102
|
+
Value fields are the core visual building blocks. Each produces a 2D float array in [0, 1] mapping every grid cell to a brightness value.
|
|
103
|
+
|
|
104
|
+
### Trigonometric (12)
|
|
105
|
+
|
|
106
|
+
| Field | Description |
|
|
107
|
+
|-------|-------------|
|
|
108
|
+
| Sine field | Layered multi-sine interference, general-purpose background |
|
|
109
|
+
| Smooth noise | Multi-octave sine approximation of Perlin noise |
|
|
110
|
+
| Rings | Concentric rings, bass-driven count and wobble |
|
|
111
|
+
| Spiral | Logarithmic spiral arms, configurable arm count/tightness |
|
|
112
|
+
| Tunnel | Infinite depth perspective (inverse distance) |
|
|
113
|
+
| Vortex | Twisting radial pattern, distance modulates angle |
|
|
114
|
+
| Interference | N overlapping sine waves creating moire |
|
|
115
|
+
| Aurora | Horizontal flowing bands |
|
|
116
|
+
| Ripple | Concentric waves from configurable source points |
|
|
117
|
+
| Plasma | Sum of sines at multiple orientations/speeds |
|
|
118
|
+
| Diamond | Diamond/checkerboard pattern |
|
|
119
|
+
| Noise/static | Random per-cell per-frame flicker |
|
|
120
|
+
|
|
121
|
+
### Noise-based (4)
|
|
122
|
+
|
|
123
|
+
| Field | Description |
|
|
124
|
+
|-------|-------------|
|
|
125
|
+
| Value noise | Smooth organic noise, no axis-alignment artifacts |
|
|
126
|
+
| fBM | Fractal Brownian Motion — octaved noise for clouds, terrain, smoke |
|
|
127
|
+
| Domain warp | Inigo Quilez technique — fBM-driven coordinate distortion for flowing organic forms |
|
|
128
|
+
| Voronoi | Moving seed points with distance, edge, and cell-ID output modes |
|
|
129
|
+
|
|
130
|
+
### Simulation-based (4)
|
|
131
|
+
|
|
132
|
+
| Field | Description |
|
|
133
|
+
|-------|-------------|
|
|
134
|
+
| Reaction-diffusion | Gray-Scott with 7 presets: coral, spots, worms, labyrinths, mitosis, pulsating, chaos |
|
|
135
|
+
| Cellular automata | Game of Life + 4 rule variants with analog fade trails |
|
|
136
|
+
| Strange attractors | Clifford, De Jong, Bedhead — iterated point systems binned to density fields |
|
|
137
|
+
| Temporal noise | 3D noise that morphs in-place without directional drift |
|
|
138
|
+
|
|
139
|
+
### SDF-based
|
|
140
|
+
|
|
141
|
+
7 signed distance field primitives (circle, box, ring, line, triangle, star, heart) with smooth boolean combinators (union, intersection, subtraction, smooth union/subtraction) and infinite tiling. Render as solid fills or glowing outlines.
|
|
142
|
+
|
|
143
|
+
## Hue field generators (9)
|
|
144
|
+
|
|
145
|
+
Determine per-cell color independent of brightness: fixed hue, angle-mapped rainbow, distance gradient, time-cycled rotation, audio spectral centroid, horizontal/vertical gradients, plasma variation, perceptually uniform OKLCH rainbow.
|
|
146
|
+
|
|
147
|
+
## Coordinate transforms (11)
|
|
148
|
+
|
|
149
|
+
UV-space transforms applied before effect evaluation: rotate, scale, skew, tile (with mirror seaming), polar, inverse-polar, twist (rotation increasing with distance), fisheye, wave displacement, Möbius conformal transformation. `make_tgrid()` wraps transformed coordinates into a grid object.
|
|
150
|
+
|
|
151
|
+
## Particle systems (9)
|
|
152
|
+
|
|
153
|
+
| Type | Behavior |
|
|
154
|
+
|------|----------|
|
|
155
|
+
| Explosion | Beat-triggered radial burst with gravity and life decay |
|
|
156
|
+
| Embers | Rising from bottom with horizontal drift |
|
|
157
|
+
| Dissolving cloud | Spreading outward with accelerating fade |
|
|
158
|
+
| Starfield | 3D projected, Z-depth stars approaching with streak trails |
|
|
159
|
+
| Orbit | Circular/elliptical paths around center |
|
|
160
|
+
| Gravity well | Attracted toward configurable point sources |
|
|
161
|
+
| Boid flocking | Separation/alignment/cohesion with spatial hash for O(n) neighbors |
|
|
162
|
+
| Flow-field | Steered by gradient of any value field |
|
|
163
|
+
| Trail particles | Fading lines between current and previous positions |
|
|
164
|
+
|
|
165
|
+
14 themed particle character sets (energy, spark, leaf, snow, rain, bubble, data, hex, binary, rune, zodiac, dot, dash).
|
|
166
|
+
|
|
167
|
+
## Temporal coherence
|
|
168
|
+
|
|
169
|
+
10 easing functions (linear, quad, cubic, expo, elastic, bounce — in/out/in-out). Keyframe interpolation with eased transitions. Value field morphing (smooth crossfade between fields). Value field sequencing (cycle through fields with crossfade). Temporal noise (3D noise evolving smoothly in-place).
|
|
170
|
+
|
|
171
|
+
## Shader pipeline
|
|
172
|
+
|
|
173
|
+
38 composable shaders, applied to the pixel canvas after character rendering. Configurable per section.
|
|
174
|
+
|
|
175
|
+
| Category | Shaders |
|
|
176
|
+
|----------|---------|
|
|
177
|
+
| Geometry | CRT barrel, pixelate, wave distort, displacement map, kaleidoscope, mirror (h/v/quad/diag) |
|
|
178
|
+
| Channel | Chromatic aberration (beat-reactive), channel shift, channel swap, RGB split radial |
|
|
179
|
+
| Color | Invert, posterize, threshold, solarize, hue rotate, saturation, color grade, color wobble, color ramp |
|
|
180
|
+
| Glow/Blur | Bloom, edge glow, soft focus, radial blur |
|
|
181
|
+
| Noise | Film grain (beat-reactive), static noise |
|
|
182
|
+
| Lines/Patterns | Scanlines, halftone |
|
|
183
|
+
| Tone | Vignette, contrast, gamma, levels, brightness |
|
|
184
|
+
| Glitch/Data | Glitch bands (beat-reactive), block glitch, pixel sort, data bend |
|
|
185
|
+
|
|
186
|
+
12 color tint presets: warm, cool, matrix green, amber, sepia, neon pink, ice, blood, forest, void, sunset, neutral.
|
|
187
|
+
|
|
188
|
+
7 mood presets for common shader combos:
|
|
189
|
+
|
|
190
|
+
| Mood | Shaders |
|
|
191
|
+
|------|---------|
|
|
192
|
+
| Retro terminal | CRT + scanlines + grain + amber/green tint |
|
|
193
|
+
| Clean modern | Light bloom + subtle vignette |
|
|
194
|
+
| Glitch art | Heavy chromatic + glitch bands + color wobble |
|
|
195
|
+
| Cinematic | Bloom + vignette + grain + color grade |
|
|
196
|
+
| Dreamy | Heavy bloom + soft focus + color wobble |
|
|
197
|
+
| Harsh/industrial | High contrast + grain + scanlines, no bloom |
|
|
198
|
+
| Psychedelic | Color wobble + chromatic + kaleidoscope mirror |
|
|
199
|
+
|
|
200
|
+
## Blend modes and composition
|
|
201
|
+
|
|
202
|
+
20 pixel blend modes for layering canvases: normal, add, subtract, multiply, screen, overlay, softlight, hardlight, difference, exclusion, colordodge, colorburn, linearlight, vividlight, pin_light, hard_mix, lighten, darken, grain_extract, grain_merge. Both sRGB and linear-light blending supported.
|
|
203
|
+
|
|
204
|
+
**Feedback buffer.** Temporal recursion — each frame blends with a transformed version of the previous frame. 7 spatial transforms: zoom, shrink, rotate CW/CCW, shift up/down, mirror. Optional per-frame hue shift for rainbow trails. Configurable decay, blend mode, and opacity per scene.
|
|
205
|
+
|
|
206
|
+
**Masking.** 16 mask types for spatial compositing: shape masks (circle, rect, ring, gradients), procedural masks (any value field as a mask, text stencils), animated masks (iris open/close, wipe, dissolve), boolean operations (union, intersection, subtraction, invert).
|
|
207
|
+
|
|
208
|
+
**Transitions.** Crossfade, directional wipe, radial wipe, dissolve, glitch cut.
|
|
209
|
+
|
|
210
|
+
## Scene design patterns
|
|
211
|
+
|
|
212
|
+
Compositional patterns for making scenes that look intentional rather than random.
|
|
213
|
+
|
|
214
|
+
**Layer hierarchy.** Background (dim atmosphere, dense grid), content (main visual, standard grid), accent (sparse highlights, coarse grid). Three distinct roles, not three competing layers.
|
|
215
|
+
|
|
216
|
+
**Directional parameter arcs.** The defining parameter of each scene ramps, accelerates, or builds over its duration. Progress-based formulas (linear, ease-out, step reveal) replace aimless `sin(t)` oscillation.
|
|
217
|
+
|
|
218
|
+
**Scene concepts.** Scenes built around visual metaphors (emergence, descent, collision, entropy) with motivated layer/palette/feedback choices. Not named after their effects.
|
|
219
|
+
|
|
220
|
+
**Compositional techniques.** Counter-rotating dual systems, wave collision, progressive fragmentation (voronoi cells multiplying over time), entropy (geometry consumed by reaction-diffusion), staggered layer entry (crescendo buildup).
|
|
221
|
+
|
|
222
|
+
## Hardware adaptation
|
|
223
|
+
|
|
224
|
+
Auto-detects CPU count, RAM, platform, ffmpeg. Adapts worker count, resolution, FPS.
|
|
225
|
+
|
|
226
|
+
| Profile | Resolution | FPS | When |
|
|
227
|
+
|---------|-----------|-----|------|
|
|
228
|
+
| `draft` | 960x540 | 12 | Check timing/layout |
|
|
229
|
+
| `preview` | 1280x720 | 15 | Review effects |
|
|
230
|
+
| `production` | 1920x1080 | 24 | Final output |
|
|
231
|
+
| `max` | 3840x2160 | 30 | Ultra-high |
|
|
232
|
+
| `auto` | Detected | 24 | Adapts to hardware + duration |
|
|
233
|
+
|
|
234
|
+
`auto` estimates render time and downgrades if it would take over an hour. Low-memory systems drop to 720p automatically.
|
|
235
|
+
|
|
236
|
+
### Render times (1080p 24fps, ~180ms/frame/worker)
|
|
237
|
+
|
|
238
|
+
| Duration | 4 workers | 8 workers | 16 workers |
|
|
239
|
+
|----------|-----------|-----------|------------|
|
|
240
|
+
| 30s | ~3 min | ~2 min | ~1 min |
|
|
241
|
+
| 2 min | ~13 min | ~7 min | ~4 min |
|
|
242
|
+
| 5 min | ~33 min | ~17 min | ~9 min |
|
|
243
|
+
| 10 min | ~65 min | ~33 min | ~17 min |
|
|
244
|
+
|
|
245
|
+
720p roughly halves these. 4K roughly quadruples them.
|
|
246
|
+
|
|
247
|
+
## Known pitfalls
|
|
248
|
+
|
|
249
|
+
**Brightness.** ASCII characters are small bright dots on black. Most frame pixels are background. Linear `* N` multipliers clip highlights and wash out. Use `tonemap()` with per-scene gamma instead. Default gamma 0.75, solarize scenes 0.55, posterize 0.50.
|
|
250
|
+
|
|
251
|
+
**Render bottleneck.** The per-cell Python loop compositing font bitmaps runs at ~100-150ms/frame. Unavoidable without Cython/C. Everything else must be vectorized numpy. Python for-loops over rows/cols in effect functions will tank performance.
|
|
252
|
+
|
|
253
|
+
**ffmpeg deadlock.** Never `stderr=subprocess.PIPE` on long-running encodes. Buffer fills at ~64KB, process hangs. Redirect stderr to a file.
|
|
254
|
+
|
|
255
|
+
**Font cell height.** Pillow's `textbbox()` returns wrong height on macOS. Use `font.getmetrics()` for `ascent + descent`.
|
|
256
|
+
|
|
257
|
+
**Font compatibility.** Not all Unicode renders in all fonts. Palettes validated at init, blank glyphs silently removed.
|
|
258
|
+
|
|
259
|
+
## Requirements
|
|
260
|
+
|
|
261
|
+
◆ Python 3.10+
|
|
262
|
+
◆ NumPy, Pillow, SciPy (audio modes)
|
|
263
|
+
◆ ffmpeg on PATH
|
|
264
|
+
◆ A monospace font (Menlo, Courier, Monaco, auto-detected)
|
|
265
|
+
◆ Optional: OpenCV, ElevenLabs API key (TTS mode)
|
|
266
|
+
|
|
267
|
+
## File structure
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
├── SKILL.md # Modes, workflow, creative direction
|
|
271
|
+
├── README.md # This file
|
|
272
|
+
└── references/
|
|
273
|
+
├── architecture.md # Grid system, fonts, palettes, color, _render_vf()
|
|
274
|
+
├── effects.md # Value fields, hue fields, backgrounds, particles
|
|
275
|
+
├── shaders.md # 38 shaders, ShaderChain, tint presets, transitions
|
|
276
|
+
├── composition.md # Blend modes, multi-grid, tonemap, FeedbackBuffer
|
|
277
|
+
├── scenes.md # Scene protocol, SCENES table, render_clip(), examples
|
|
278
|
+
├── design-patterns.md # Layer hierarchy, directional arcs, scene concepts
|
|
279
|
+
├── inputs.md # Audio analysis, video sampling, text, TTS
|
|
280
|
+
├── optimization.md # Hardware detection, vectorized patterns, parallelism
|
|
281
|
+
└── troubleshooting.md # Broadcasting traps, blend pitfalls, diagnostics
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## Projects built with this
|
|
285
|
+
|
|
286
|
+
✦ 85-second highlight reel. 15 scenes (14×5s + 15s crescendo finale), randomized order, directional parameter arcs, layer hierarchy composition. Showcases the full effect vocabulary: fBM, voronoi fragmentation, reaction-diffusion, cellular automata, dual counter-rotating spirals, wave collision, domain warping, tunnel descent, kaleidoscope symmetry, boid flocking, fire simulation, glitch corruption, and a 7-layer crescendo buildup.
|
|
287
|
+
|
|
288
|
+
✦ Audio-reactive music visualizer. 3.5 min, 8 sections with distinct effects, beat-triggered particles and glitch, cycling palettes.
|
|
289
|
+
|
|
290
|
+
✦ TTS narrated testimonial video. 23 quotes, per-quote ElevenLabs voices, background music at 15% wide stereo, per-clip re-rendering for iterative editing.
|