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.
Files changed (179) hide show
  1. daisyui_mcp-0.1.0/.github/workflow.yml +4 -0
  2. daisyui_mcp-0.1.0/.github/workflows/ci.yml +42 -0
  3. daisyui_mcp-0.1.0/.github/workflows/publish.yml +39 -0
  4. daisyui_mcp-0.1.0/.gitignore +207 -0
  5. daisyui_mcp-0.1.0/CHANGELOG.md +11 -0
  6. daisyui_mcp-0.1.0/CONTEXT.md +25 -0
  7. daisyui_mcp-0.1.0/CONTRIBUTING.md +31 -0
  8. daisyui_mcp-0.1.0/LICENSE +21 -0
  9. daisyui_mcp-0.1.0/PKG-INFO +131 -0
  10. daisyui_mcp-0.1.0/PLAN.md +9 -0
  11. daisyui_mcp-0.1.0/README.md +112 -0
  12. daisyui_mcp-0.1.0/SECURITY.md +14 -0
  13. daisyui_mcp-0.1.0/TASK.md +20 -0
  14. daisyui_mcp-0.1.0/components/accordion.md +27 -0
  15. daisyui_mcp-0.1.0/components/alert.md +19 -0
  16. daisyui_mcp-0.1.0/components/avatar.md +23 -0
  17. daisyui_mcp-0.1.0/components/badge.md +20 -0
  18. daisyui_mcp-0.1.0/components/breadcrumbs.md +19 -0
  19. daisyui_mcp-0.1.0/components/button.md +22 -0
  20. daisyui_mcp-0.1.0/components/calendar.md +27 -0
  21. daisyui_mcp-0.1.0/components/card.md +29 -0
  22. daisyui_mcp-0.1.0/components/carousel.md +20 -0
  23. daisyui_mcp-0.1.0/components/chat.md +25 -0
  24. daisyui_mcp-0.1.0/components/checkbox.md +17 -0
  25. daisyui_mcp-0.1.0/components/collapse.md +22 -0
  26. daisyui_mcp-0.1.0/components/countdown.md +19 -0
  27. daisyui_mcp-0.1.0/components/daisyui-mcp-v1.4.zip +0 -0
  28. daisyui_mcp-0.1.0/components/diff.md +20 -0
  29. daisyui_mcp-0.1.0/components/divider.md +19 -0
  30. daisyui_mcp-0.1.0/components/dock.md +27 -0
  31. daisyui_mcp-0.1.0/components/drawer.md +98 -0
  32. daisyui_mcp-0.1.0/components/dropdown.md +39 -0
  33. daisyui_mcp-0.1.0/components/fab.md +98 -0
  34. daisyui_mcp-0.1.0/components/fieldset.md +20 -0
  35. daisyui_mcp-0.1.0/components/file-input.md +18 -0
  36. daisyui_mcp-0.1.0/components/filter.md +32 -0
  37. daisyui_mcp-0.1.0/components/footer.md +21 -0
  38. daisyui_mcp-0.1.0/components/hero.md +19 -0
  39. daisyui_mcp-0.1.0/components/hover-3d.md +33 -0
  40. daisyui_mcp-0.1.0/components/hover-gallery.md +23 -0
  41. daisyui_mcp-0.1.0/components/indicator.md +21 -0
  42. daisyui_mcp-0.1.0/components/input.md +20 -0
  43. daisyui_mcp-0.1.0/components/join.md +19 -0
  44. daisyui_mcp-0.1.0/components/kbd.md +16 -0
  45. daisyui_mcp-0.1.0/components/label.md +27 -0
  46. daisyui_mcp-0.1.0/components/link.md +17 -0
  47. daisyui_mcp-0.1.0/components/list.md +20 -0
  48. daisyui_mcp-0.1.0/components/loading.md +17 -0
  49. daisyui_mcp-0.1.0/components/mask.md +19 -0
  50. daisyui_mcp-0.1.0/components/mcp-daisyui-3.0.zip +0 -0
  51. daisyui_mcp-0.1.0/components/menu.md +32 -0
  52. daisyui_mcp-0.1.0/components/mockup-browser.md +22 -0
  53. daisyui_mcp-0.1.0/components/mockup-code.md +19 -0
  54. daisyui_mcp-0.1.0/components/mockup-phone.md +19 -0
  55. daisyui_mcp-0.1.0/components/mockup-window.md +14 -0
  56. daisyui_mcp-0.1.0/components/modal.md +44 -0
  57. daisyui_mcp-0.1.0/components/navbar.md +18 -0
  58. daisyui_mcp-0.1.0/components/pagination.md +18 -0
  59. daisyui_mcp-0.1.0/components/progress.md +17 -0
  60. daisyui_mcp-0.1.0/components/radial-progress.md +18 -0
  61. daisyui_mcp-0.1.0/components/radio.md +19 -0
  62. daisyui_mcp-0.1.0/components/range.md +18 -0
  63. daisyui_mcp-0.1.0/components/rating.md +21 -0
  64. daisyui_mcp-0.1.0/components/select.md +20 -0
  65. daisyui_mcp-0.1.0/components/skeleton.md +20 -0
  66. daisyui_mcp-0.1.0/components/stack.md +17 -0
  67. daisyui_mcp-0.1.0/components/stat.md +21 -0
  68. daisyui_mcp-0.1.0/components/status.md +18 -0
  69. daisyui_mcp-0.1.0/components/steps.md +23 -0
  70. daisyui_mcp-0.1.0/components/swap.md +33 -0
  71. daisyui_mcp-0.1.0/components/tab.md +31 -0
  72. daisyui_mcp-0.1.0/components/table.md +31 -0
  73. daisyui_mcp-0.1.0/components/text-rotate.md +66 -0
  74. daisyui_mcp-0.1.0/components/textarea.md +18 -0
  75. daisyui_mcp-0.1.0/components/theme-controller.md +15 -0
  76. daisyui_mcp-0.1.0/components/timeline.md +27 -0
  77. daisyui_mcp-0.1.0/components/toast.md +16 -0
  78. daisyui_mcp-0.1.0/components/toggle.md +17 -0
  79. daisyui_mcp-0.1.0/components/validator.md +17 -0
  80. daisyui_mcp-0.1.0/docs/adr/0001-versioned-content-boundary.md +11 -0
  81. daisyui_mcp-0.1.0/docs/releasing.md +41 -0
  82. daisyui_mcp-0.1.0/mcp_server.py +9 -0
  83. daisyui_mcp-0.1.0/pyproject.toml +59 -0
  84. daisyui_mcp-0.1.0/requirements.txt +2 -0
  85. daisyui_mcp-0.1.0/setup.cfg +4 -0
  86. daisyui_mcp-0.1.0/src/daisyui_mcp/__init__.py +66 -0
  87. daisyui_mcp-0.1.0/src/daisyui_mcp/__main__.py +6 -0
  88. daisyui_mcp-0.1.0/src/daisyui_mcp/api.py +129 -0
  89. daisyui_mcp-0.1.0/src/daisyui_mcp/catalog.py +99 -0
  90. daisyui_mcp-0.1.0/src/daisyui_mcp/cli.py +83 -0
  91. daisyui_mcp-0.1.0/src/daisyui_mcp/content.py +392 -0
  92. daisyui_mcp-0.1.0/src/daisyui_mcp/data/SOURCES.md +11 -0
  93. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/accordion.md +27 -0
  94. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/alert.md +19 -0
  95. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/aura.md +24 -0
  96. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/avatar.md +23 -0
  97. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/badge.md +20 -0
  98. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/breadcrumbs.md +19 -0
  99. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/button.md +22 -0
  100. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/calendar.md +27 -0
  101. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/card.md +29 -0
  102. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/carousel.md +20 -0
  103. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/chat.md +25 -0
  104. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/checkbox.md +17 -0
  105. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/collapse.md +22 -0
  106. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/countdown.md +19 -0
  107. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/diff.md +20 -0
  108. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/divider.md +19 -0
  109. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/dock.md +27 -0
  110. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/drawer.md +98 -0
  111. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/dropdown.md +39 -0
  112. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/fab.md +98 -0
  113. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/fieldset.md +20 -0
  114. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/file-input.md +18 -0
  115. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/filter.md +32 -0
  116. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/footer.md +21 -0
  117. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/hero.md +19 -0
  118. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/hover-3d.md +33 -0
  119. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/hover-gallery.md +23 -0
  120. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/indicator.md +21 -0
  121. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/input.md +20 -0
  122. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/join.md +19 -0
  123. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/kbd.md +16 -0
  124. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/label.md +27 -0
  125. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/link.md +17 -0
  126. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/list.md +20 -0
  127. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/loading.md +17 -0
  128. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/mask.md +19 -0
  129. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/megamenu.md +71 -0
  130. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/menu.md +32 -0
  131. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/mockup-browser.md +22 -0
  132. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/mockup-code.md +19 -0
  133. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/mockup-phone.md +19 -0
  134. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/mockup-window.md +14 -0
  135. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/modal.md +44 -0
  136. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/navbar.md +18 -0
  137. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/otp.md +30 -0
  138. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/pagination.md +18 -0
  139. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/progress.md +17 -0
  140. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/radial-progress.md +18 -0
  141. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/radio.md +19 -0
  142. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/range.md +18 -0
  143. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/rating.md +21 -0
  144. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/select.md +20 -0
  145. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/skeleton.md +20 -0
  146. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/stack.md +17 -0
  147. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/stat.md +21 -0
  148. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/status.md +18 -0
  149. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/steps.md +23 -0
  150. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/swap.md +33 -0
  151. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/tab.md +31 -0
  152. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/table.md +31 -0
  153. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/text-rotate.md +66 -0
  154. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/textarea.md +18 -0
  155. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/theme-controller.md +15 -0
  156. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/timeline.md +27 -0
  157. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/toast.md +16 -0
  158. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/toggle.md +17 -0
  159. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/tooltip.md +24 -0
  160. daisyui_mcp-0.1.0/src/daisyui_mcp/data/components/validator.md +17 -0
  161. daisyui_mcp-0.1.0/src/daisyui_mcp/data/skills/daisyui/SKILL.md +114 -0
  162. daisyui_mcp-0.1.0/src/daisyui_mcp/py.typed +1 -0
  163. daisyui_mcp-0.1.0/src/daisyui_mcp/server.py +219 -0
  164. daisyui_mcp-0.1.0/src/daisyui_mcp/skills.py +138 -0
  165. daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/PKG-INFO +131 -0
  166. daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/SOURCES.txt +177 -0
  167. daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/dependency_links.txt +1 -0
  168. daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/entry_points.txt +2 -0
  169. daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/requires.txt +12 -0
  170. daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/scm_file_list.json +173 -0
  171. daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/scm_version.json +8 -0
  172. daisyui_mcp-0.1.0/src/daisyui_mcp.egg-info/top_level.txt +1 -0
  173. daisyui_mcp-0.1.0/tests/conftest.py +11 -0
  174. daisyui_mcp-0.1.0/tests/test_catalog.py +35 -0
  175. daisyui_mcp-0.1.0/tests/test_content.py +103 -0
  176. daisyui_mcp-0.1.0/tests/test_server.py +38 -0
  177. daisyui_mcp-0.1.0/tests/test_skills.py +66 -0
  178. daisyui_mcp-0.1.0/update_components.py +22 -0
  179. daisyui_mcp-0.1.0/uv.lock +2674 -0
@@ -0,0 +1,4 @@
1
+ # GitHub discovers workflow files under .github/workflows/.
2
+ # The canonical tagged PyPI publisher is .github/workflows/publish.yml.
3
+ # This compatibility note preserves the requested singular path without
4
+ # creating a second, undiscoverable publishing workflow.
@@ -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
+ ```