feat(skills): add create-website skill for zero-build responsive SPAs and showcases

This commit is contained in:
Moritz Graf
2026-09-28 07:37:36 +02:00
parent 7336f7bfff
commit 2bde04617f
7 changed files with 681 additions and 0 deletions
@@ -0,0 +1,45 @@
import unittest
from pathlib import Path
import sys
# Add scripts directory to path
script_dir = Path(__file__).resolve().parent.parent / "scripts"
sys.path.insert(0, str(script_dir))
from publish_website import validate_html, resolve_hosting_script
class TestPublishWebsite(unittest.TestCase):
def test_validate_html_valid(self):
valid_html = """
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
<script src="https://unpkg.com/lucide@latest"></script>
</head>
<body>
<i data-lucide="sparkles"></i>
<script>lucide.createIcons();</script>
</body>
</html>
"""
warnings = validate_html(valid_html)
self.assertEqual(warnings, [])
def test_validate_html_warnings(self):
broken_html = "<html><body>Hello</body></html>"
warnings = validate_html(broken_html)
self.assertIn("Missing <!DOCTYPE html> declaration.", warnings)
self.assertIn("Missing responsive viewport meta tag.", warnings)
self.assertIn("Tailwind CSS CDN not detected in HTML.", warnings)
self.assertIn("Alpine.js script not detected (interactivity might be missing).", warnings)
def test_resolve_hosting_script(self):
hosting_script = resolve_hosting_script()
self.assertTrue(hosting_script.exists())
self.assertEqual(hosting_script.name, "publish_file.py")
if __name__ == "__main__":
unittest.main()