daisyui-mcp 0.2.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 (184) hide show
  1. daisyui_mcp-0.2.0/.github/workflow.yml +4 -0
  2. daisyui_mcp-0.2.0/.github/workflows/ci.yml +42 -0
  3. daisyui_mcp-0.2.0/.github/workflows/publish.yml +39 -0
  4. daisyui_mcp-0.2.0/.gitignore +207 -0
  5. daisyui_mcp-0.2.0/CHANGELOG.md +18 -0
  6. daisyui_mcp-0.2.0/CONTEXT.md +37 -0
  7. daisyui_mcp-0.2.0/CONTRIBUTING.md +31 -0
  8. daisyui_mcp-0.2.0/LICENSE +21 -0
  9. daisyui_mcp-0.2.0/PKG-INFO +170 -0
  10. daisyui_mcp-0.2.0/PLAN.md +9 -0
  11. daisyui_mcp-0.2.0/README.md +151 -0
  12. daisyui_mcp-0.2.0/SECURITY.md +14 -0
  13. daisyui_mcp-0.2.0/TASK.md +20 -0
  14. daisyui_mcp-0.2.0/components/accordion.md +27 -0
  15. daisyui_mcp-0.2.0/components/alert.md +19 -0
  16. daisyui_mcp-0.2.0/components/avatar.md +23 -0
  17. daisyui_mcp-0.2.0/components/badge.md +20 -0
  18. daisyui_mcp-0.2.0/components/breadcrumbs.md +19 -0
  19. daisyui_mcp-0.2.0/components/button.md +22 -0
  20. daisyui_mcp-0.2.0/components/calendar.md +27 -0
  21. daisyui_mcp-0.2.0/components/card.md +29 -0
  22. daisyui_mcp-0.2.0/components/carousel.md +20 -0
  23. daisyui_mcp-0.2.0/components/chat.md +25 -0
  24. daisyui_mcp-0.2.0/components/checkbox.md +17 -0
  25. daisyui_mcp-0.2.0/components/collapse.md +22 -0
  26. daisyui_mcp-0.2.0/components/countdown.md +19 -0
  27. daisyui_mcp-0.2.0/components/daisyui-mcp-v1.4.zip +0 -0
  28. daisyui_mcp-0.2.0/components/diff.md +20 -0
  29. daisyui_mcp-0.2.0/components/divider.md +19 -0
  30. daisyui_mcp-0.2.0/components/dock.md +27 -0
  31. daisyui_mcp-0.2.0/components/drawer.md +98 -0
  32. daisyui_mcp-0.2.0/components/dropdown.md +39 -0
  33. daisyui_mcp-0.2.0/components/fab.md +98 -0
  34. daisyui_mcp-0.2.0/components/fieldset.md +20 -0
  35. daisyui_mcp-0.2.0/components/file-input.md +18 -0
  36. daisyui_mcp-0.2.0/components/filter.md +32 -0
  37. daisyui_mcp-0.2.0/components/footer.md +21 -0
  38. daisyui_mcp-0.2.0/components/hero.md +19 -0
  39. daisyui_mcp-0.2.0/components/hover-3d.md +33 -0
  40. daisyui_mcp-0.2.0/components/hover-gallery.md +23 -0
  41. daisyui_mcp-0.2.0/components/indicator.md +21 -0
  42. daisyui_mcp-0.2.0/components/input.md +20 -0
  43. daisyui_mcp-0.2.0/components/join.md +19 -0
  44. daisyui_mcp-0.2.0/components/kbd.md +16 -0
  45. daisyui_mcp-0.2.0/components/label.md +27 -0
  46. daisyui_mcp-0.2.0/components/link.md +17 -0
  47. daisyui_mcp-0.2.0/components/list.md +20 -0
  48. daisyui_mcp-0.2.0/components/loading.md +17 -0
  49. daisyui_mcp-0.2.0/components/mask.md +19 -0
  50. daisyui_mcp-0.2.0/components/mcp-daisyui-3.0.zip +0 -0
  51. daisyui_mcp-0.2.0/components/menu.md +32 -0
  52. daisyui_mcp-0.2.0/components/mockup-browser.md +22 -0
  53. daisyui_mcp-0.2.0/components/mockup-code.md +19 -0
  54. daisyui_mcp-0.2.0/components/mockup-phone.md +19 -0
  55. daisyui_mcp-0.2.0/components/mockup-window.md +14 -0
  56. daisyui_mcp-0.2.0/components/modal.md +44 -0
  57. daisyui_mcp-0.2.0/components/navbar.md +18 -0
  58. daisyui_mcp-0.2.0/components/pagination.md +18 -0
  59. daisyui_mcp-0.2.0/components/progress.md +17 -0
  60. daisyui_mcp-0.2.0/components/radial-progress.md +18 -0
  61. daisyui_mcp-0.2.0/components/radio.md +19 -0
  62. daisyui_mcp-0.2.0/components/range.md +18 -0
  63. daisyui_mcp-0.2.0/components/rating.md +21 -0
  64. daisyui_mcp-0.2.0/components/select.md +20 -0
  65. daisyui_mcp-0.2.0/components/skeleton.md +20 -0
  66. daisyui_mcp-0.2.0/components/stack.md +17 -0
  67. daisyui_mcp-0.2.0/components/stat.md +21 -0
  68. daisyui_mcp-0.2.0/components/status.md +18 -0
  69. daisyui_mcp-0.2.0/components/steps.md +23 -0
  70. daisyui_mcp-0.2.0/components/swap.md +33 -0
  71. daisyui_mcp-0.2.0/components/tab.md +31 -0
  72. daisyui_mcp-0.2.0/components/table.md +31 -0
  73. daisyui_mcp-0.2.0/components/text-rotate.md +66 -0
  74. daisyui_mcp-0.2.0/components/textarea.md +18 -0
  75. daisyui_mcp-0.2.0/components/theme-controller.md +15 -0
  76. daisyui_mcp-0.2.0/components/timeline.md +27 -0
  77. daisyui_mcp-0.2.0/components/toast.md +16 -0
  78. daisyui_mcp-0.2.0/components/toggle.md +17 -0
  79. daisyui_mcp-0.2.0/components/validator.md +17 -0
  80. daisyui_mcp-0.2.0/docs/adr/0001-versioned-content-boundary.md +11 -0
  81. daisyui_mcp-0.2.0/docs/adr/0002-codex-profile-template-for-mcp-registration.md +11 -0
  82. daisyui_mcp-0.2.0/docs/releasing.md +41 -0
  83. daisyui_mcp-0.2.0/examples/config.toml +13 -0
  84. daisyui_mcp-0.2.0/mcp_server.py +9 -0
  85. daisyui_mcp-0.2.0/pyproject.toml +59 -0
  86. daisyui_mcp-0.2.0/requirements.txt +2 -0
  87. daisyui_mcp-0.2.0/setup.cfg +4 -0
  88. daisyui_mcp-0.2.0/src/daisyui_mcp/__init__.py +66 -0
  89. daisyui_mcp-0.2.0/src/daisyui_mcp/__main__.py +6 -0
  90. daisyui_mcp-0.2.0/src/daisyui_mcp/api.py +129 -0
  91. daisyui_mcp-0.2.0/src/daisyui_mcp/catalog.py +99 -0
  92. daisyui_mcp-0.2.0/src/daisyui_mcp/cli.py +114 -0
  93. daisyui_mcp-0.2.0/src/daisyui_mcp/config.py +33 -0
  94. daisyui_mcp-0.2.0/src/daisyui_mcp/content.py +392 -0
  95. daisyui_mcp-0.2.0/src/daisyui_mcp/data/SOURCES.md +11 -0
  96. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/accordion.md +27 -0
  97. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/alert.md +19 -0
  98. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/aura.md +24 -0
  99. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/avatar.md +23 -0
  100. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/badge.md +20 -0
  101. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/breadcrumbs.md +19 -0
  102. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/button.md +22 -0
  103. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/calendar.md +27 -0
  104. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/card.md +29 -0
  105. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/carousel.md +20 -0
  106. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/chat.md +25 -0
  107. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/checkbox.md +17 -0
  108. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/collapse.md +22 -0
  109. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/countdown.md +19 -0
  110. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/diff.md +20 -0
  111. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/divider.md +19 -0
  112. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/dock.md +27 -0
  113. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/drawer.md +98 -0
  114. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/dropdown.md +39 -0
  115. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/fab.md +98 -0
  116. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/fieldset.md +20 -0
  117. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/file-input.md +18 -0
  118. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/filter.md +32 -0
  119. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/footer.md +21 -0
  120. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/hero.md +19 -0
  121. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/hover-3d.md +33 -0
  122. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/hover-gallery.md +23 -0
  123. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/indicator.md +21 -0
  124. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/input.md +20 -0
  125. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/join.md +19 -0
  126. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/kbd.md +16 -0
  127. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/label.md +27 -0
  128. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/link.md +17 -0
  129. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/list.md +20 -0
  130. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/loading.md +17 -0
  131. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/mask.md +19 -0
  132. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/megamenu.md +71 -0
  133. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/menu.md +32 -0
  134. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/mockup-browser.md +22 -0
  135. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/mockup-code.md +19 -0
  136. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/mockup-phone.md +19 -0
  137. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/mockup-window.md +14 -0
  138. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/modal.md +44 -0
  139. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/navbar.md +18 -0
  140. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/otp.md +30 -0
  141. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/pagination.md +18 -0
  142. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/progress.md +17 -0
  143. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/radial-progress.md +18 -0
  144. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/radio.md +19 -0
  145. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/range.md +18 -0
  146. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/rating.md +21 -0
  147. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/select.md +20 -0
  148. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/skeleton.md +20 -0
  149. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/stack.md +17 -0
  150. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/stat.md +21 -0
  151. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/status.md +18 -0
  152. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/steps.md +23 -0
  153. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/swap.md +33 -0
  154. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/tab.md +31 -0
  155. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/table.md +31 -0
  156. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/text-rotate.md +66 -0
  157. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/textarea.md +18 -0
  158. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/theme-controller.md +15 -0
  159. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/timeline.md +27 -0
  160. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/toast.md +16 -0
  161. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/toggle.md +17 -0
  162. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/tooltip.md +24 -0
  163. daisyui_mcp-0.2.0/src/daisyui_mcp/data/components/validator.md +17 -0
  164. daisyui_mcp-0.2.0/src/daisyui_mcp/data/daisyui-mcp.config.toml +8 -0
  165. daisyui_mcp-0.2.0/src/daisyui_mcp/data/skills/daisyui/SKILL.md +114 -0
  166. daisyui_mcp-0.2.0/src/daisyui_mcp/py.typed +1 -0
  167. daisyui_mcp-0.2.0/src/daisyui_mcp/server.py +219 -0
  168. daisyui_mcp-0.2.0/src/daisyui_mcp/skills.py +138 -0
  169. daisyui_mcp-0.2.0/src/daisyui_mcp.egg-info/PKG-INFO +170 -0
  170. daisyui_mcp-0.2.0/src/daisyui_mcp.egg-info/SOURCES.txt +182 -0
  171. daisyui_mcp-0.2.0/src/daisyui_mcp.egg-info/dependency_links.txt +1 -0
  172. daisyui_mcp-0.2.0/src/daisyui_mcp.egg-info/entry_points.txt +2 -0
  173. daisyui_mcp-0.2.0/src/daisyui_mcp.egg-info/requires.txt +12 -0
  174. daisyui_mcp-0.2.0/src/daisyui_mcp.egg-info/scm_file_list.json +178 -0
  175. daisyui_mcp-0.2.0/src/daisyui_mcp.egg-info/scm_version.json +8 -0
  176. daisyui_mcp-0.2.0/src/daisyui_mcp.egg-info/top_level.txt +1 -0
  177. daisyui_mcp-0.2.0/tests/conftest.py +11 -0
  178. daisyui_mcp-0.2.0/tests/test_catalog.py +35 -0
  179. daisyui_mcp-0.2.0/tests/test_cli.py +67 -0
  180. daisyui_mcp-0.2.0/tests/test_content.py +103 -0
  181. daisyui_mcp-0.2.0/tests/test_server.py +38 -0
  182. daisyui_mcp-0.2.0/tests/test_skills.py +66 -0
  183. daisyui_mcp-0.2.0/update_components.py +22 -0
  184. daisyui_mcp-0.2.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,18 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 - 2026-09-22
4
+
5
+ - Added a safe CLI installer for the reusable Codex DaisyUI MCP profile.
6
+ - Documented direct `codex mcp add` registration and profile-based startup.
7
+ - Prioritized `uv tool install daisyui-mcp` in the installation guide.
8
+ - Updated project attribution and PyPI release references.
9
+
10
+ ## 0.1.0
11
+
12
+ - Renewed the fork as a typed Python 3.10+ package with a src layout.
13
+ - Preserved list_components and get_component compatibility tools.
14
+ - Added search, status, refresh, skill, and resource capabilities.
15
+ - Added current DaisyUI component/installation guidance and offline fallback data.
16
+ - Added safe installation of the official DaisyUI agent skill tree.
17
+ - Added strict MyPy, Ruff, pytest, wheel, and Twine validation.
18
+ - Added GitHub Actions CI and Trusted Publishing workflow configuration.
@@ -0,0 +1,37 @@
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
26
+
27
+ **Codex profile**:
28
+ A named runtime configuration layer selected explicitly for a Codex session.
29
+ _Avoid_: Project-local configuration
30
+
31
+ **Profile template**:
32
+ A shareable configuration artifact that must be installed into the Codex runtime before it can be selected.
33
+ _Avoid_: Automatically active project configuration
34
+
35
+ **MCP registration**:
36
+ A configured connection to one MCP server whose tools and resources form one capability surface.
37
+ _Avoid_: One registration per tool
@@ -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) 2026 Avery Freeman
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,170 @@
1
+ Metadata-Version: 2.4
2
+ Name: daisyui-mcp
3
+ Version: 0.2.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
+ Published package: https://pypi.org/project/daisyui-mcp/
28
+
29
+ ## Install with uv
30
+
31
+ Install the MCP server as a user tool:
32
+
33
+ ~~~bash
34
+ uv tool install daisyui-mcp
35
+ ~~~
36
+
37
+ For optional skill-management dependencies:
38
+
39
+ ~~~bash
40
+ uv tool install "daisyui-mcp[skills]"
41
+ ~~~
42
+
43
+ ## Install with pip
44
+
45
+ Install the MCP server into the active Python environment:
46
+
47
+ ~~~bash
48
+ python -m pip install daisyui-mcp
49
+ ~~~
50
+
51
+ For optional skill-management dependencies:
52
+
53
+ ~~~bash
54
+ python -m pip install "daisyui-mcp[skills]"
55
+ ~~~
56
+
57
+ For local development, sync the committed lockfile:
58
+
59
+ ~~~bash
60
+ uv sync --locked --extra dev --extra skills
61
+ ~~~
62
+
63
+ ## Run
64
+
65
+ The default command serves MCP over stdio:
66
+
67
+ ~~~bash
68
+ daisyui-mcp
69
+ ~~~
70
+
71
+ To configure an MCP client, use the installed executable as its command:
72
+
73
+ ~~~text
74
+ /absolute/path/to/daisyui-mcp/.venv/bin/daisyui-mcp
75
+ ~~~
76
+
77
+ The compatibility module mcp_server.py remains available for older
78
+ checkout-based configurations.
79
+
80
+ ## MCP surface
81
+
82
+ Tools:
83
+
84
+ - list_components and get_component(name) preserve the original API.
85
+ - search_daisyui(query) searches component and skill metadata.
86
+ - list_skills() and get_skill(name) expose the bundled official skill.
87
+ - refresh_daisyui() refreshes current component docs with cached fallback.
88
+ - install_daisyui_skills(target) installs the official skill tree.
89
+ - daisyui_status() reports content origin, counts, and refresh time.
90
+
91
+ Resources:
92
+
93
+ - daisyui://components
94
+ - daisyui://skills
95
+ - daisyui://install
96
+ - daisyui://status
97
+ - daisyui://component/{name}
98
+ - daisyui://skill/{name}
99
+
100
+ The MCP server can install skills into the current project with an explicit
101
+ tool call. The CLI equivalent is:
102
+
103
+ ~~~bash
104
+ daisyui-mcp skills install
105
+ daisyui-mcp skills install --target ./custom/skills/daisyui
106
+ ~~~
107
+
108
+ The default target is ./.agents/skills/daisyui. The installer fetches the
109
+ official DaisyUI skill tree, validates archive paths, and falls back to the
110
+ packaged SKILL.md if the network is unavailable.
111
+
112
+ ## Configure Codex
113
+
114
+ Install a reusable Codex profile template in the current project:
115
+
116
+ ~~~bash
117
+ daisyui-mcp config install
118
+ ~~~
119
+
120
+ Copy `daisyui-mcp.config.toml` to
121
+ `$CODEX_HOME/daisyui-mcp.config.toml` (usually `~/.codex/`), then run:
122
+
123
+ ~~~bash
124
+ codex --profile daisyui-mcp
125
+ ~~~
126
+
127
+ The profile starts one stdio MCP server; its complete tools and resources are
128
+ available after startup. As a one-time global alternative, run:
129
+
130
+ ~~~bash
131
+ codex mcp add daisyui-mcp -- daisyui-mcp serve
132
+ ~~~
133
+
134
+ See [examples/config.toml](examples/config.toml) for the equivalent TOML.
135
+
136
+ ## DaisyUI source and refresh behavior
137
+
138
+ The runtime specification follows the official DaisyUI installation guide:
139
+
140
+ https://daisyui.com/docs/install/
141
+
142
+ Current component content is fetched from:
143
+
144
+ https://daisyui.com/llms.txt
145
+
146
+ daisyui-mcp refresh stores a JSON snapshot in the platform user cache. The
147
+ server serves cached content after a successful prior refresh and bundled
148
+ content when no cache exists or the network is unavailable. The package also
149
+ bundles current component docs, including aura, megamenu, otp, and tooltip,
150
+ plus the official skill entrypoint.
151
+
152
+ ## Development
153
+
154
+ ~~~bash
155
+ uv sync --locked --extra dev --extra skills
156
+ uv run --extra dev ruff check .
157
+ uv run --extra dev ruff format --check .
158
+ uv run --extra dev mypy src tests
159
+ uv run --extra dev pytest
160
+ uv run --extra dev python -m build
161
+ uv run --extra dev twine check dist/*
162
+ ~~~
163
+
164
+ The project uses a src layout, setuptools with setuptools-scm, strict MyPy,
165
+ Ruff, pytest, and a committed uv.lock. Git tags such as v0.2.0 determine
166
+ the package version used by the release workflow.
167
+
168
+ ## License
169
+
170
+ 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.