{"id":"66ff6594-1f71-4309-9861-d9798e9f2575","slug":"datasette-skill","name":"datasette-plugins","description":"Writing Datasette plugins using Python and the pluggy plugin system. Use when Claude needs to: (1) Create a new Datasette plugin, (2) Implement plugin hooks like prepare_connection, register_routes, render_cell, etc., (3) Add custom SQL functions, (4) Create custom output renderers, (5) Add authentication or permissions logic, (6) Extend Datasette's UI with menus, actions, or templates, (7) Package a plugin for distribution on PyPI","canonicalUrl":"https://xpersona.co/skill/datasette-skill","sourceUrl":"https://github.com/datasette/skill","homepage":null,"source":"GITHUB_OPENCLEW","vendor":{"slug":"datasette","label":"Datasette","url":"https://github.com/datasette/skill"},"protocols":["OPENCLEW"],"capabilities":["add"],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":null,"freshnessAt":"2026-02-22T11:48:10.541Z","freshnessLabel":"Feb 22, 2026","securityReviewed":true,"openapiReady":true,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"OpenClaw"},{"label":"Freshness","value":"Feb 22, 2026"},{"label":"Vendor","value":"Datasette"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"Unpublished"}],"factsPreview":[{"factKey":"docs_crawl","category":"integration","label":"Crawlable docs","value":"6 indexed pages on the official domain","href":"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar","sourceUrl":"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar","sourceType":"search_document","confidence":"medium","observedAt":"2026-04-15T05:03:46.393Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://xpersona.co/api/v1/agents/datasette-skill/contract","sourceUrl":"https://xpersona.co/api/v1/agents/datasette-skill/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-02-24T19:44:23.818Z","isPublic":true},{"factKey":"auth_modes","category":"compatibility","label":"Auth modes","value":"api_key","href":"https://xpersona.co/api/v1/agents/datasette-skill/contract","sourceUrl":"https://xpersona.co/api/v1/agents/datasette-skill/contract","sourceType":"contract","confidence":"high","observedAt":"2026-02-24T19:44:23.818Z","isPublic":true},{"factKey":"schema_refs","category":"artifact","label":"Machine-readable schemas","value":"OpenAPI or schema references published","href":"https://github.com/datasette/skill#input","sourceUrl":"https://xpersona.co/api/v1/agents/datasette-skill/contract","sourceType":"contract","confidence":"high","observedAt":"2026-02-24T19:44:23.818Z","isPublic":true},{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Datasette","href":"https://github.com/datasette/skill","sourceUrl":"https://github.com/datasette/skill","sourceType":"profile","confidence":"medium","observedAt":"2026-02-24T19:43:14.176Z","isPublic":true},{"factKey":"traction","category":"adoption","label":"Adoption signal","value":"11 GitHub stars","href":"https://github.com/datasette/skill","sourceUrl":"https://github.com/datasette/skill","sourceType":"profile","confidence":"medium","observedAt":"2026-02-24T19:43:14.176Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://xpersona.co/api/v1/agents/datasette-skill/trust","sourceUrl":"https://xpersona.co/api/v1/agents/datasette-skill/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["11 GitHub stars","Schema refs published","Trust evidence available"],"agentCard":{"name":"datasette-plugins","description":"Writing Datasette plugins using Python and the pluggy plugin system. Use when Claude needs to: (1) Create a new Datasette plugin, (2) Implement plugin hooks like prepare_connection, register_routes, render_cell, etc., (3) Add custom SQL functions, (4) Create custom output renderers, (5) Add authentication or permissions logic, (6) Extend Datasette's UI with menus, actions, or templates, (7) Package a plugin for distribution on PyPI","source":"GITHUB_OPENCLEW","sourceId":"github:1115458343","repository":"https://github.com/datasette/skill","documentation":"https://xpersona.co/skill/datasette-skill/agent/datasette-skill","protocols":["OPENCLEW"],"capabilities":["add"],"languages":["typescript"],"install":{"command":"git clone https://github.com/datasette/skill.git","ecosystem":"git"},"examples":[{"kind":"example","language":"python","snippet":"from datasette import hookimpl\n\n@hookimpl\ndef prepare_connection(conn):\n    conn.create_function(\"hello_world\", 0, lambda: \"Hello world!\")"},{"kind":"example","language":"text","snippet":"datasette-my-plugin/\n├── pyproject.toml\n├── datasette_my_plugin/\n│   ├── __init__.py      # Plugin implementation\n│   ├── static/          # Optional: JS/CSS files\n│   └── templates/       # Optional: Jinja2 templates\n└── tests/\n    └── test_plugin.py"}]}}