daisyui-mcp 0.1.0__tar.gz
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.
- daisyui_mcp-0.1.0/.github/workflow.yml +4 -0
- daisyui_mcp-0.1.0/.github/workflows/ci.yml +42 -0
- daisyui_mcp-0.1.0/.github/workflows/publish.yml +39 -0
- daisyui_mcp-0.1.0/.gitignore +207 -0
- daisyui_mcp-0.1.0/CHANGELOG.md +11 -0
- daisyui_mcp-0.1.0/CONTEXT.md +25 -0
- daisyui_mcp-0.1.0/CONTRIBUTING.md +31 -0
- daisyui_mcp-0.1.0/LICENSE +21 -0
- daisyui_mcp-0.1.0/PKG-INFO +131 -0
- daisyui_mcp-0.1.0/PLAN.md +9 -0
- daisyui_mcp-0.1.0/README.md +112 -0
- daisyui_mcp-0.1.0/SECURITY.md +14 -0
- daisyui_mcp-0.1.0/TASK.md +20 -0
- daisyui_mcp-0.1.0/components/accordion.md +27 -0
- daisyui_mcp-0.1.0/components/alert.md +19 -0
- daisyui_mcp-0.1.0/components/avatar.md +23 -0
- daisyui_mcp-0.1.0/components/badge.md +20 -0
- daisyui_mcp-0.1.0/components/breadcrumbs.md +19 -0
- daisyui_mcp-0.1.0/components/button.md +22 -0
- daisyui_mcp-0.1.0/components/calendar.md +27 -0
- daisyui_mcp-0.1.0/components/card.md +29 -0
- daisyui_mcp-0.1.0/components/carousel.md +20 -0
- daisyui_mcp-0.1.0/components/chat.md +25 -0
- daisyui_mcp-0.1.0/components/checkbox.md +17 -0
- daisyui_mcp-0.1.0/components/collapse.md +22 -0
- daisyui_mcp-0.1.0/components/countdown.md +19 -0
- daisyui_mcp-0.1.0/components/daisyui-mcp-v1.4.zip +0 -0
- daisyui_mcp-0.1.0/components/diff.md +20 -0
- daisyui_mcp-0.1.0/components/divider.md +19 -0
- daisyui_mcp-0.1.0/components/dock.md +27 -0
- daisyui_mcp-0.1.0/components/drawer.md +98 -0
- daisyui_mcp-0.1.0/components/dropdown.md +39 -0
- daisyui_mcp-0.1.0/components/fab.md +98 -0
- daisyui_mcp-0.1.0/components/fieldset.md +20 -0
- daisyui_mcp-0.1.0/components/file-input.md +18 -0
- daisyui_mcp-0.1.0/components/filter.md +32 -0
- daisyui_mcp-0.1.0/components/footer.md +21 -0
- daisyui_mcp-0.1.0/components/hero.md +19 -0
- daisyui_mcp-0.1.0/components/hover-3d.md +33 -0
- daisyui_mcp-0.1.0/components/hover-gallery.md +23 -0
- daisyui_mcp-0.1.0/components/indicator.md +21 -0
- daisyui_mcp-0.1.0/components/input.md +20 -0
- daisyui_mcp-0.1.0/components/join.md +19 -0
- daisyui_mcp-0.1.0/components/kbd.md +16 -0
- daisyui_mcp-0.1.0/components/label.md +27 -0
- daisyui_mcp-0.1.0/components/link.md +17 -0
- daisyui_mcp-0.1.0/components/list.md +20 -0
- daisyui_mcp-0.1.0/components/loading.md +17 -0
- daisyui_mcp-0.1.0/components/mask.md +19 -0
- daisyui_mcp-0.1.0/components/mcp-daisyui-3.0.zip +0 -0
- daisyui_mcp-0.1.0/components/menu.md +32 -0
- daisyui_mcp-0.1.0/components/mockup-browser.md +22 -0
- daisyui_mcp-0.1.0/components/mockup-code.md +19 -0
- daisyui_mcp-0.1.0/components/mockup-phone.md +19 -0
- daisyui_mcp-0.1.0/components/mockup-window.md +14 -0
- daisyui_mcp-0.1.0/components/modal.md +44 -0
- daisyui_mcp-0.1.0/components/navbar.md +18 -0
- daisyui_mcp-0.1.0/components/pagination.md +18 -0
- daisyui_mcp-0.1.0/components/progress.md +17 -0
- daisyui_mcp-0.1.0/components/radial-progress.md +18 -0
- daisyui_mcp-0.1.0/components/radio.md +19 -0
- daisyui_mcp-0.1.0/components/range.md +18 -0
- daisyui_mcp-0.1.0/components/rating.md +21 -0
- daisyui_mcp-0.1.0/components/select.md +20 -0
- daisyui_mcp-0.1.0/components/skeleton.md +20 -0
- daisyui_mcp-0.1.0/components/stack.md +17 -0
- daisyui_mcp-0.1.0/components/stat.md +21 -0
- daisyui_mcp-0.1.0/components/status.md +18 -0
- daisyui_mcp-0.1.0/components/steps.md +23 -0
- daisyui_mcp-0.1.0/components/swap.md +33 -0
- daisyui_mcp-0.1.0/components/tab.md +31 -0
- daisyui_mcp-0.1.0/components/table.md +31 -0
- daisyui_mcp-0.1.0/components/text-rotate.md +66 -0
- daisyui_mcp-0.1.0/components/textarea.md +18 -0
- daisyui_mcp-0.1.0/components/theme-controller.md +15 -0
- daisyui_mcp-0.1.0/components/timeline.md +27 -0
- daisyui_mcp-0.1.0/components/toast.md +16 -0
- daisyui_mcp-0.1.0/components/toggle.md +17 -0
- daisyui_mcp-0.1.0/components/validator.md +17 -0
- daisyui_mcp-0.1.0/docs/adr/0001-versioned-content-boundary.md +11 -0
- daisyui_mcp-0.1.0/docs/releasing.md +41 -0
- daisyui_mcp-0.1.0/mcp_server.py +9 -0
- daisyui_mcp-0.1.0/pyproject.toml +59 -0
- daisyui_mcp-0.1.0/requirements.txt +2 -0
- daisyui_mcp-0.1.0/setup.cfg +4 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/__init__.py +66 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/__main__.py +6 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/api.py +129 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/catalog.py +99 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/cli.py +83 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/content.py +392 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/SOURCES.md +11 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/accordion.md +27 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/alert.md +19 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/aura.md +24 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/avatar.md +23 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/badge.md +20 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/breadcrumbs.md +19 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/button.md +22 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/calendar.md +27 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/card.md +29 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/carousel.md +20 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/chat.md +25 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/checkbox.md +17 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/collapse.md +22 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/countdown.md +19 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/diff.md +20 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/divider.md +19 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/dock.md +27 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/drawer.md +98 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/dropdown.md +39 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/fab.md +98 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/fieldset.md +20 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/file-input.md +18 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/filter.md +32 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/footer.md +21 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/hero.md +19 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/hover-3d.md +33 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/hover-gallery.md +23 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/indicator.md +21 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/input.md +20 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/join.md +19 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/kbd.md +16 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/label.md +27 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/link.md +17 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/list.md +20 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/loading.md +17 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/mask.md +19 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/megamenu.md +71 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/menu.md +32 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/mockup-browser.md +22 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/mockup-code.md +19 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/mockup-phone.md +19 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/mockup-window.md +14 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/modal.md +44 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/navbar.md +18 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/otp.md +30 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/pagination.md +18 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/progress.md +17 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/radial-progress.md +18 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/radio.md +19 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/range.md +18 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/rating.md +21 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/select.md +20 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/skeleton.md +20 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/stack.md +17 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/stat.md +21 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/status.md +18 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/steps.md +23 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/swap.md +33 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/tab.md +31 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/table.md +31 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/text-rotate.md +66 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/textarea.md +18 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/theme-controller.md +15 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/timeline.md +27 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/toast.md +16 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/toggle.md +17 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/tooltip.md +24 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/validator.md +17 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/data/skills/daisyui/SKILL.md +114 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/py.typed +1 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/server.py +219 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp/skills.py +138 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/PKG-INFO +131 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/SOURCES.txt +177 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/dependency_links.txt +1 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/entry_points.txt +2 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/requires.txt +12 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/scm_file_list.json +173 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/scm_version.json +8 -0
- daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/top_level.txt +1 -0
- daisyui_mcp-0.1.0/tests/conftest.py +11 -0
- daisyui_mcp-0.1.0/tests/test_catalog.py +35 -0
- daisyui_mcp-0.1.0/tests/test_content.py +103 -0
- daisyui_mcp-0.1.0/tests/test_server.py +38 -0
- daisyui_mcp-0.1.0/tests/test_skills.py +66 -0
- daisyui_mcp-0.1.0/update_components.py +22 -0
- daisyui_mcp-0.1.0/uv.lock +2674 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
checks:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
strategy:
|
|
15
|
+
fail-fast: false
|
|
16
|
+
matrix:
|
|
17
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
18
|
+
steps:
|
|
19
|
+
- name: Check out source
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
- name: Install uv
|
|
24
|
+
uses: astral-sh/setup-uv@v6
|
|
25
|
+
with:
|
|
26
|
+
version: latest
|
|
27
|
+
- name: Set up Python
|
|
28
|
+
run: uv python install ${{ matrix.python-version }}
|
|
29
|
+
- name: Install dependencies
|
|
30
|
+
run: uv sync --locked --extra dev --extra skills
|
|
31
|
+
- name: Check formatting
|
|
32
|
+
run: uv run --extra dev ruff format --check .
|
|
33
|
+
- name: Lint
|
|
34
|
+
run: uv run --extra dev ruff check .
|
|
35
|
+
- name: Type-check
|
|
36
|
+
run: uv run --extra dev mypy src tests
|
|
37
|
+
- name: Test
|
|
38
|
+
run: uv run --extra dev pytest
|
|
39
|
+
- name: Build distributions
|
|
40
|
+
run: uv run --extra dev python -m build
|
|
41
|
+
- name: Check distributions
|
|
42
|
+
run: uv run --extra dev twine check dist/*
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*.*.*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
publish:
|
|
13
|
+
name: Build and publish the tagged release
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
environment:
|
|
16
|
+
name: release
|
|
17
|
+
url: https://pypi.org/p/daisyui-mcp
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
id-token: write
|
|
21
|
+
steps:
|
|
22
|
+
- name: Check out the tagged source
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
with:
|
|
25
|
+
fetch-depth: 0
|
|
26
|
+
- name: Install uv
|
|
27
|
+
uses: astral-sh/setup-uv@v6
|
|
28
|
+
with:
|
|
29
|
+
version: latest
|
|
30
|
+
- name: Set up Python
|
|
31
|
+
run: uv python install 3.12
|
|
32
|
+
- name: Install release tooling
|
|
33
|
+
run: uv sync --locked --extra dev
|
|
34
|
+
- name: Build the tagged distributions
|
|
35
|
+
run: uv run --extra dev python -m build
|
|
36
|
+
- name: Validate metadata
|
|
37
|
+
run: uv run --extra dev twine check dist/*
|
|
38
|
+
- name: Publish with Trusted Publishing
|
|
39
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[codz]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# PyInstaller
|
|
30
|
+
# Usually these files are written by a python script from a template
|
|
31
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
+
*.manifest
|
|
33
|
+
*.spec
|
|
34
|
+
|
|
35
|
+
# Installer logs
|
|
36
|
+
pip-log.txt
|
|
37
|
+
pip-delete-this-directory.txt
|
|
38
|
+
|
|
39
|
+
# Unit test / coverage reports
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
.coverage
|
|
44
|
+
.coverage.*
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
*.py.cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
.pytest_cache/
|
|
52
|
+
cover/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
# Flask stuff:
|
|
65
|
+
instance/
|
|
66
|
+
.webassets-cache
|
|
67
|
+
|
|
68
|
+
# Scrapy stuff:
|
|
69
|
+
.scrapy
|
|
70
|
+
|
|
71
|
+
# Sphinx documentation
|
|
72
|
+
docs/_build/
|
|
73
|
+
|
|
74
|
+
# PyBuilder
|
|
75
|
+
.pybuilder/
|
|
76
|
+
target/
|
|
77
|
+
|
|
78
|
+
# Jupyter Notebook
|
|
79
|
+
.ipynb_checkpoints
|
|
80
|
+
|
|
81
|
+
# IPython
|
|
82
|
+
profile_default/
|
|
83
|
+
ipython_config.py
|
|
84
|
+
|
|
85
|
+
# pyenv
|
|
86
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
87
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
88
|
+
# .python-version
|
|
89
|
+
|
|
90
|
+
# pipenv
|
|
91
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
92
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
93
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
94
|
+
# install all needed dependencies.
|
|
95
|
+
#Pipfile.lock
|
|
96
|
+
|
|
97
|
+
# UV
|
|
98
|
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
|
99
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
100
|
+
# commonly ignored for libraries.
|
|
101
|
+
#uv.lock
|
|
102
|
+
|
|
103
|
+
# poetry
|
|
104
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
105
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
106
|
+
# commonly ignored for libraries.
|
|
107
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
108
|
+
#poetry.lock
|
|
109
|
+
#poetry.toml
|
|
110
|
+
|
|
111
|
+
# pdm
|
|
112
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
113
|
+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
|
114
|
+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
|
115
|
+
#pdm.lock
|
|
116
|
+
#pdm.toml
|
|
117
|
+
.pdm-python
|
|
118
|
+
.pdm-build/
|
|
119
|
+
|
|
120
|
+
# pixi
|
|
121
|
+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
|
122
|
+
#pixi.lock
|
|
123
|
+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
|
124
|
+
# in the .venv directory. It is recommended not to include this directory in version control.
|
|
125
|
+
.pixi
|
|
126
|
+
|
|
127
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
128
|
+
__pypackages__/
|
|
129
|
+
|
|
130
|
+
# Celery stuff
|
|
131
|
+
celerybeat-schedule
|
|
132
|
+
celerybeat.pid
|
|
133
|
+
|
|
134
|
+
# SageMath parsed files
|
|
135
|
+
*.sage.py
|
|
136
|
+
|
|
137
|
+
# Environments
|
|
138
|
+
.env
|
|
139
|
+
.envrc
|
|
140
|
+
.venv
|
|
141
|
+
env/
|
|
142
|
+
venv/
|
|
143
|
+
ENV/
|
|
144
|
+
env.bak/
|
|
145
|
+
venv.bak/
|
|
146
|
+
|
|
147
|
+
# Spyder project settings
|
|
148
|
+
.spyderproject
|
|
149
|
+
.spyproject
|
|
150
|
+
|
|
151
|
+
# Rope project settings
|
|
152
|
+
.ropeproject
|
|
153
|
+
|
|
154
|
+
# mkdocs documentation
|
|
155
|
+
/site
|
|
156
|
+
|
|
157
|
+
# mypy
|
|
158
|
+
.mypy_cache/
|
|
159
|
+
.dmypy.json
|
|
160
|
+
dmypy.json
|
|
161
|
+
|
|
162
|
+
# Pyre type checker
|
|
163
|
+
.pyre/
|
|
164
|
+
|
|
165
|
+
# pytype static type analyzer
|
|
166
|
+
.pytype/
|
|
167
|
+
|
|
168
|
+
# Cython debug symbols
|
|
169
|
+
cython_debug/
|
|
170
|
+
|
|
171
|
+
# PyCharm
|
|
172
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
173
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
174
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
175
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
176
|
+
#.idea/
|
|
177
|
+
|
|
178
|
+
# Abstra
|
|
179
|
+
# Abstra is an AI-powered process automation framework.
|
|
180
|
+
# Ignore directories containing user credentials, local state, and settings.
|
|
181
|
+
# Learn more at https://abstra.io/docs
|
|
182
|
+
.abstra/
|
|
183
|
+
|
|
184
|
+
# Visual Studio Code
|
|
185
|
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
|
186
|
+
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
187
|
+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
188
|
+
# you could uncomment the following to ignore the entire vscode folder
|
|
189
|
+
# .vscode/
|
|
190
|
+
|
|
191
|
+
# Ruff stuff:
|
|
192
|
+
.ruff_cache/
|
|
193
|
+
|
|
194
|
+
# PyPI configuration file
|
|
195
|
+
.pypirc
|
|
196
|
+
|
|
197
|
+
# Cursor
|
|
198
|
+
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
|
|
199
|
+
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
|
|
200
|
+
# refer to https://docs.cursor.com/context/ignore-files
|
|
201
|
+
.cursorignore
|
|
202
|
+
.cursorindexingignore
|
|
203
|
+
|
|
204
|
+
# Marimo
|
|
205
|
+
marimo/_static/
|
|
206
|
+
marimo/_lsp/
|
|
207
|
+
__marimo__/
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
- Renewed the fork as a typed Python 3.10+ package with a src layout.
|
|
6
|
+
- Preserved list_components and get_component compatibility tools.
|
|
7
|
+
- Added search, status, refresh, skill, and resource capabilities.
|
|
8
|
+
- Added current DaisyUI component/installation guidance and offline fallback data.
|
|
9
|
+
- Added safe installation of the official DaisyUI agent skill tree.
|
|
10
|
+
- Added strict MyPy, Ruff, pytest, wheel, and Twine validation.
|
|
11
|
+
- Added GitHub Actions CI and Trusted Publishing workflow configuration.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# DaisyUI MCP
|
|
2
|
+
|
|
3
|
+
This context defines the language used by the local server that makes official DaisyUI documentation useful to MCP clients.
|
|
4
|
+
|
|
5
|
+
## Language
|
|
6
|
+
|
|
7
|
+
**Component**:
|
|
8
|
+
A DaisyUI UI primitive with a canonical name and official documentation.
|
|
9
|
+
_Avoid_: Widget, control
|
|
10
|
+
|
|
11
|
+
**Documentation**:
|
|
12
|
+
The Markdown reference material published for DaisyUI components and their usage.
|
|
13
|
+
_Avoid_: Scrape, page dump
|
|
14
|
+
|
|
15
|
+
**Skill**:
|
|
16
|
+
An official, reusable set of DaisyUI guidance intended to teach an AI tool how to work with the library.
|
|
17
|
+
_Avoid_: Prompt, recipe
|
|
18
|
+
|
|
19
|
+
**Content source**:
|
|
20
|
+
The official DaisyUI material from which a served component or skill document originates.
|
|
21
|
+
_Avoid_: Feed, endpoint
|
|
22
|
+
|
|
23
|
+
**Project-local installation**:
|
|
24
|
+
An installation of an official skill into the current project’s designated skills directory.
|
|
25
|
+
_Avoid_: Global installation, user installation
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
## Setup
|
|
4
|
+
|
|
5
|
+
Use uv and the committed lockfile:
|
|
6
|
+
|
|
7
|
+
~~~bash
|
|
8
|
+
uv sync --locked --extra dev --extra skills
|
|
9
|
+
~~~
|
|
10
|
+
|
|
11
|
+
Run the complete local checks before opening a pull request:
|
|
12
|
+
|
|
13
|
+
~~~bash
|
|
14
|
+
uv run --extra dev ruff check .
|
|
15
|
+
uv run --extra dev ruff format --check .
|
|
16
|
+
uv run --extra dev mypy src tests
|
|
17
|
+
uv run --extra dev pytest
|
|
18
|
+
~~~
|
|
19
|
+
|
|
20
|
+
## Content changes
|
|
21
|
+
|
|
22
|
+
Prefer the official DaisyUI sources. Component content belongs under the
|
|
23
|
+
package data directory so wheel installations remain self-contained. Use
|
|
24
|
+
daisyui-mcp refresh or update_components.py when updating the snapshot, and
|
|
25
|
+
review the resulting component changes rather than committing unrelated cache
|
|
26
|
+
files.
|
|
27
|
+
|
|
28
|
+
## Pull requests
|
|
29
|
+
|
|
30
|
+
Keep changes focused, add tests for behavior changes, and update the changelog
|
|
31
|
+
when the public MCP surface changes.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 birdseyevue
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: daisyui-mcp
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A local MCP server for DaisyUI component documentation.
|
|
5
|
+
Requires-Python: <4,>=3.10
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Dist: fastmcp<5.0,>=4.0
|
|
9
|
+
Requires-Dist: platformdirs<5.0,>=4.0
|
|
10
|
+
Provides-Extra: skills
|
|
11
|
+
Requires-Dist: httpx<1,>=0.27; extra == "skills"
|
|
12
|
+
Provides-Extra: dev
|
|
13
|
+
Requires-Dist: build<2,>=1.2; extra == "dev"
|
|
14
|
+
Requires-Dist: mypy<3,>=1.15; extra == "dev"
|
|
15
|
+
Requires-Dist: pytest<10,>=8.3; extra == "dev"
|
|
16
|
+
Requires-Dist: ruff<1,>=0.9; extra == "dev"
|
|
17
|
+
Requires-Dist: twine<8,>=6; extra == "dev"
|
|
18
|
+
Dynamic: license-file
|
|
19
|
+
|
|
20
|
+
# daisyui-mcp
|
|
21
|
+
|
|
22
|
+
A typed, local Model Context Protocol server for official DaisyUI 5
|
|
23
|
+
documentation and agent skills. It is distributed as a normal Python wheel,
|
|
24
|
+
works with Python 3.10+, and keeps a bundled offline snapshot for predictable
|
|
25
|
+
development.
|
|
26
|
+
|
|
27
|
+
## Install
|
|
28
|
+
|
|
29
|
+
Install the MCP server with pip:
|
|
30
|
+
|
|
31
|
+
~~~bash
|
|
32
|
+
python -m pip install daisyui-mcp
|
|
33
|
+
~~~
|
|
34
|
+
|
|
35
|
+
Install the server and its optional skill-management dependency:
|
|
36
|
+
|
|
37
|
+
~~~bash
|
|
38
|
+
python -m pip install "daisyui-mcp[skills]"
|
|
39
|
+
uv tool install "daisyui-mcp[skills]"
|
|
40
|
+
~~~
|
|
41
|
+
|
|
42
|
+
For local development, sync the committed lockfile:
|
|
43
|
+
|
|
44
|
+
~~~bash
|
|
45
|
+
uv sync --locked --extra dev --extra skills
|
|
46
|
+
~~~
|
|
47
|
+
|
|
48
|
+
## Run
|
|
49
|
+
|
|
50
|
+
The default command serves MCP over stdio:
|
|
51
|
+
|
|
52
|
+
~~~bash
|
|
53
|
+
daisyui-mcp
|
|
54
|
+
~~~
|
|
55
|
+
|
|
56
|
+
To configure an MCP client, use the installed executable as its command:
|
|
57
|
+
|
|
58
|
+
~~~text
|
|
59
|
+
/absolute/path/to/daisyui-mcp/.venv/bin/daisyui-mcp
|
|
60
|
+
~~~
|
|
61
|
+
|
|
62
|
+
The compatibility module mcp_server.py remains available for older
|
|
63
|
+
checkout-based configurations.
|
|
64
|
+
|
|
65
|
+
## MCP surface
|
|
66
|
+
|
|
67
|
+
Tools:
|
|
68
|
+
|
|
69
|
+
- list_components and get_component(name) preserve the original API.
|
|
70
|
+
- search_daisyui(query) searches component and skill metadata.
|
|
71
|
+
- list_skills() and get_skill(name) expose the bundled official skill.
|
|
72
|
+
- refresh_daisyui() refreshes current component docs with cached fallback.
|
|
73
|
+
- install_daisyui_skills(target) installs the official skill tree.
|
|
74
|
+
- daisyui_status() reports content origin, counts, and refresh time.
|
|
75
|
+
|
|
76
|
+
Resources:
|
|
77
|
+
|
|
78
|
+
- daisyui://components
|
|
79
|
+
- daisyui://skills
|
|
80
|
+
- daisyui://install
|
|
81
|
+
- daisyui://status
|
|
82
|
+
- daisyui://component/{name}
|
|
83
|
+
- daisyui://skill/{name}
|
|
84
|
+
|
|
85
|
+
The MCP server can install skills into the current project with an explicit
|
|
86
|
+
tool call. The CLI equivalent is:
|
|
87
|
+
|
|
88
|
+
~~~bash
|
|
89
|
+
daisyui-mcp skills install
|
|
90
|
+
daisyui-mcp skills install --target ./custom/skills/daisyui
|
|
91
|
+
~~~
|
|
92
|
+
|
|
93
|
+
The default target is ./.agents/skills/daisyui. The installer fetches the
|
|
94
|
+
official DaisyUI skill tree, validates archive paths, and falls back to the
|
|
95
|
+
packaged SKILL.md if the network is unavailable.
|
|
96
|
+
|
|
97
|
+
## DaisyUI source and refresh behavior
|
|
98
|
+
|
|
99
|
+
The runtime specification follows the official DaisyUI installation guide:
|
|
100
|
+
|
|
101
|
+
https://daisyui.com/docs/install/
|
|
102
|
+
|
|
103
|
+
Current component content is fetched from:
|
|
104
|
+
|
|
105
|
+
https://daisyui.com/llms.txt
|
|
106
|
+
|
|
107
|
+
daisyui-mcp refresh stores a JSON snapshot in the platform user cache. The
|
|
108
|
+
server serves cached content after a successful prior refresh and bundled
|
|
109
|
+
content when no cache exists or the network is unavailable. The package also
|
|
110
|
+
bundles current component docs, including aura, megamenu, otp, and tooltip,
|
|
111
|
+
plus the official skill entrypoint.
|
|
112
|
+
|
|
113
|
+
## Development
|
|
114
|
+
|
|
115
|
+
~~~bash
|
|
116
|
+
uv sync --locked --extra dev --extra skills
|
|
117
|
+
uv run --extra dev ruff check .
|
|
118
|
+
uv run --extra dev ruff format --check .
|
|
119
|
+
uv run --extra dev mypy src tests
|
|
120
|
+
uv run --extra dev pytest
|
|
121
|
+
uv run --extra dev python -m build
|
|
122
|
+
uv run --extra dev twine check dist/*
|
|
123
|
+
~~~
|
|
124
|
+
|
|
125
|
+
The project uses a src layout, setuptools with setuptools-scm, strict MyPy,
|
|
126
|
+
Ruff, pytest, and a committed uv.lock. Git tags such as v0.1.0 determine
|
|
127
|
+
the package version used by the release workflow.
|
|
128
|
+
|
|
129
|
+
## License
|
|
130
|
+
|
|
131
|
+
MIT. See LICENSE.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Implementation slices
|
|
2
|
+
|
|
3
|
+
- [x] T001: Establish the src-layout package, typed public API skeleton, Git-BBQ context, initial ADR, and development tooling configuration.
|
|
4
|
+
- [x] T002: Import current DaisyUI component documentation and official skill resources with attribution and package-data configuration.
|
|
5
|
+
- [x] T003: Implement the typed content store, runtime source synchronization, persistent cache fallback, validation, and maintainer CLI commands.
|
|
6
|
+
- [x] T004: Implement backward-compatible MCP tools plus typed component, installation, skill, and status resources using FastMCP.
|
|
7
|
+
- [x] T005: Add strict mypy coverage and pytest unit/integration tests for content, synchronization, cache, path safety, MCP behavior, and CLI installation.
|
|
8
|
+
- [x] T006: Complete README, CHANGELOG, contributor/security guidance, CI checks, wheel metadata, and tag-triggered OIDC PyPI publishing workflow.
|
|
9
|
+
- [x] T007: Verify pip and uv-tool installation from the built wheel, repair all failed checks, and leave a release-ready local tree.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# daisyui-mcp
|
|
2
|
+
|
|
3
|
+
A typed, local Model Context Protocol server for official DaisyUI 5
|
|
4
|
+
documentation and agent skills. It is distributed as a normal Python wheel,
|
|
5
|
+
works with Python 3.10+, and keeps a bundled offline snapshot for predictable
|
|
6
|
+
development.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
Install the MCP server with pip:
|
|
11
|
+
|
|
12
|
+
~~~bash
|
|
13
|
+
python -m pip install daisyui-mcp
|
|
14
|
+
~~~
|
|
15
|
+
|
|
16
|
+
Install the server and its optional skill-management dependency:
|
|
17
|
+
|
|
18
|
+
~~~bash
|
|
19
|
+
python -m pip install "daisyui-mcp[skills]"
|
|
20
|
+
uv tool install "daisyui-mcp[skills]"
|
|
21
|
+
~~~
|
|
22
|
+
|
|
23
|
+
For local development, sync the committed lockfile:
|
|
24
|
+
|
|
25
|
+
~~~bash
|
|
26
|
+
uv sync --locked --extra dev --extra skills
|
|
27
|
+
~~~
|
|
28
|
+
|
|
29
|
+
## Run
|
|
30
|
+
|
|
31
|
+
The default command serves MCP over stdio:
|
|
32
|
+
|
|
33
|
+
~~~bash
|
|
34
|
+
daisyui-mcp
|
|
35
|
+
~~~
|
|
36
|
+
|
|
37
|
+
To configure an MCP client, use the installed executable as its command:
|
|
38
|
+
|
|
39
|
+
~~~text
|
|
40
|
+
/absolute/path/to/daisyui-mcp/.venv/bin/daisyui-mcp
|
|
41
|
+
~~~
|
|
42
|
+
|
|
43
|
+
The compatibility module mcp_server.py remains available for older
|
|
44
|
+
checkout-based configurations.
|
|
45
|
+
|
|
46
|
+
## MCP surface
|
|
47
|
+
|
|
48
|
+
Tools:
|
|
49
|
+
|
|
50
|
+
- list_components and get_component(name) preserve the original API.
|
|
51
|
+
- search_daisyui(query) searches component and skill metadata.
|
|
52
|
+
- list_skills() and get_skill(name) expose the bundled official skill.
|
|
53
|
+
- refresh_daisyui() refreshes current component docs with cached fallback.
|
|
54
|
+
- install_daisyui_skills(target) installs the official skill tree.
|
|
55
|
+
- daisyui_status() reports content origin, counts, and refresh time.
|
|
56
|
+
|
|
57
|
+
Resources:
|
|
58
|
+
|
|
59
|
+
- daisyui://components
|
|
60
|
+
- daisyui://skills
|
|
61
|
+
- daisyui://install
|
|
62
|
+
- daisyui://status
|
|
63
|
+
- daisyui://component/{name}
|
|
64
|
+
- daisyui://skill/{name}
|
|
65
|
+
|
|
66
|
+
The MCP server can install skills into the current project with an explicit
|
|
67
|
+
tool call. The CLI equivalent is:
|
|
68
|
+
|
|
69
|
+
~~~bash
|
|
70
|
+
daisyui-mcp skills install
|
|
71
|
+
daisyui-mcp skills install --target ./custom/skills/daisyui
|
|
72
|
+
~~~
|
|
73
|
+
|
|
74
|
+
The default target is ./.agents/skills/daisyui. The installer fetches the
|
|
75
|
+
official DaisyUI skill tree, validates archive paths, and falls back to the
|
|
76
|
+
packaged SKILL.md if the network is unavailable.
|
|
77
|
+
|
|
78
|
+
## DaisyUI source and refresh behavior
|
|
79
|
+
|
|
80
|
+
The runtime specification follows the official DaisyUI installation guide:
|
|
81
|
+
|
|
82
|
+
https://daisyui.com/docs/install/
|
|
83
|
+
|
|
84
|
+
Current component content is fetched from:
|
|
85
|
+
|
|
86
|
+
https://daisyui.com/llms.txt
|
|
87
|
+
|
|
88
|
+
daisyui-mcp refresh stores a JSON snapshot in the platform user cache. The
|
|
89
|
+
server serves cached content after a successful prior refresh and bundled
|
|
90
|
+
content when no cache exists or the network is unavailable. The package also
|
|
91
|
+
bundles current component docs, including aura, megamenu, otp, and tooltip,
|
|
92
|
+
plus the official skill entrypoint.
|
|
93
|
+
|
|
94
|
+
## Development
|
|
95
|
+
|
|
96
|
+
~~~bash
|
|
97
|
+
uv sync --locked --extra dev --extra skills
|
|
98
|
+
uv run --extra dev ruff check .
|
|
99
|
+
uv run --extra dev ruff format --check .
|
|
100
|
+
uv run --extra dev mypy src tests
|
|
101
|
+
uv run --extra dev pytest
|
|
102
|
+
uv run --extra dev python -m build
|
|
103
|
+
uv run --extra dev twine check dist/*
|
|
104
|
+
~~~
|
|
105
|
+
|
|
106
|
+
The project uses a src layout, setuptools with setuptools-scm, strict MyPy,
|
|
107
|
+
Ruff, pytest, and a committed uv.lock. Git tags such as v0.1.0 determine
|
|
108
|
+
the package version used by the release workflow.
|
|
109
|
+
|
|
110
|
+
## License
|
|
111
|
+
|
|
112
|
+
MIT. See LICENSE.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Security policy
|
|
2
|
+
|
|
3
|
+
## Reporting a vulnerability
|
|
4
|
+
|
|
5
|
+
Please do not open a public issue for a suspected vulnerability. Contact the
|
|
6
|
+
maintainer at averyfreeman@gmail.com with a description, reproduction steps,
|
|
7
|
+
and the affected version.
|
|
8
|
+
|
|
9
|
+
## Runtime safety
|
|
10
|
+
|
|
11
|
+
The refresh operation has bounded response sizes and timeout-controlled network
|
|
12
|
+
requests. Skill installation extracts only files below the official
|
|
13
|
+
skills/daisyui archive subtree and rejects traversal paths. Installation is
|
|
14
|
+
explicit; the package does not write project files during import.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
## Goal
|
|
2
|
+
|
|
3
|
+
Renew the DaisyUI MCP server from the edited source snapshot, align it with the current DaisyUI 5 documentation and official skills, make the Python package fully typed and pip/uv-installable, and prepare a verified PyPI release for `daisyui-mcp`.
|
|
4
|
+
|
|
5
|
+
## Acceptance criteria
|
|
6
|
+
|
|
7
|
+
- The project uses a typed `src/daisyui_mcp` package with setuptools-scm versioning, `py.typed`, compatible runtime dependency ranges, and a committed `uv.lock`.
|
|
8
|
+
- The MCP server preserves `list_components` and `get_component`, and adds typed discovery, search, skill, refresh, status, and resource capabilities aligned with the current DaisyUI documentation model.
|
|
9
|
+
- Current official DaisyUI component documentation and skill resources are bundled with attribution, refreshed at runtime with bounded network access, and served through validated persistent-cache fallback behavior.
|
|
10
|
+
- `daisyui-mcp skills install` supports project-local installation by default and an explicitly supplied CLI target; MCP installation is restricted to the project-local skills directory.
|
|
11
|
+
- Production code, CLI code, synchronization code, and tests have complete type annotations and pass strict mypy checks.
|
|
12
|
+
- Unit and integration tests cover parsing, lookup, refresh failures, cache fallback, path safety, MCP calls/resources, CLI installation, and package contents.
|
|
13
|
+
- Ruff, pytest, mypy, wheel/sdist build, and twine metadata validation pass through the verification command below.
|
|
14
|
+
- README, CONTEXT.md, native ADR records, CHANGELOG.md, CI workflow, and OIDC PyPI publish workflow document the supported installation and release process.
|
|
15
|
+
|
|
16
|
+
## Verification
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
uv run --extra dev ruff check . && uv run --extra dev ruff format --check . && uv run --extra dev mypy src tests && uv run --extra dev pytest && temp_dist="$(mktemp -d)" && uv run --extra dev python -m build --outdir "$temp_dist" && uv run --extra dev twine check "$temp_dist"/*
|
|
20
|
+
```
|