{"id":"f8307b14-34aa-4c96-a131-b24070c3a653","shortId":"aqanBL","kind":"skill","title":"hono","tagline":"Build ultra-fast web APIs and full-stack apps with Hono — runs on Cloudflare Workers, Deno, Bun, Node.js, and any WinterCG-compatible runtime.","description":"# Hono Web Framework\n\n## Overview\n\nHono (炎, \"flame\" in Japanese) is a small, ultrafast web framework built on Web Standards (`Request`/`Response`/`fetch`). It runs anywhere: Cloudflare Workers, Deno Deploy, Bun, Node.js, AWS Lambda, and any WinterCG-compatible runtime — with the same code. Hono's router is one of the fastest available, and its middleware system, built-in JSX support, and RPC client make it a strong choice for edge APIs, BFFs, and lightweight full-stack apps.\n\n## When to Use This Skill\n\n- Use when building a REST or RPC API for edge deployment (Cloudflare Workers, Deno Deploy)\n- Use when you need a minimal but type-safe server framework for Bun or Node.js\n- Use when building a Backend for Frontend (BFF) layer with low latency requirements\n- Use when migrating from Express but wanting better TypeScript support and edge compatibility\n- Use when the user asks about Hono routing, middleware, `c.req`, `c.json`, or `hc()` RPC client\n\n## How It Works\n\n### Step 1: Project Setup\n\n**Cloudflare Workers (recommended for edge):**\n```bash\nnpm create hono@latest my-api\n# Select: cloudflare-workers\ncd my-api\nnpm install\nnpm run dev    # Wrangler local dev\nnpm run deploy # Deploy to Cloudflare\n```\n\n**Bun / Node.js:**\n```bash\nmkdir my-api && cd my-api\nbun init\nbun add hono\n```\n\n```typescript\n// src/index.ts (Bun)\nimport { Hono } from 'hono';\n\nconst app = new Hono();\n\napp.get('/', c => c.text('Hello Hono!'));\n\nexport default {\n  port: 3000,\n  fetch: app.fetch,\n};\n```\n\n### Step 2: Routing\n\n```typescript\nimport { Hono } from 'hono';\n\nconst app = new Hono();\n\n// Basic methods\napp.get('/posts', c => c.json({ posts: [] }));\napp.post('/posts', c => c.json({ created: true }, 201));\napp.put('/posts/:id', c => c.json({ updated: true }));\napp.delete('/posts/:id', c => c.json({ deleted: true }));\n\n// Route params and query strings\napp.get('/posts/:id', async c => {\n  const id = c.req.param('id');\n  const format = c.req.query('format') ?? 'json';\n  return c.json({ id, format });\n});\n\n// Wildcard\napp.get('/static/*', c => c.text('static file'));\n\nexport default app;\n```\n\n**Chained routing:**\n```typescript\napp\n  .get('/users', listUsers)\n  .post('/users', createUser)\n  .get('/users/:id', getUser)\n  .patch('/users/:id', updateUser)\n  .delete('/users/:id', deleteUser);\n```\n\n### Step 3: Middleware\n\nHono middleware works exactly like `fetch` interceptors — before and after handlers:\n\n```typescript\nimport { Hono } from 'hono';\nimport { logger } from 'hono/logger';\nimport { cors } from 'hono/cors';\nimport { bearerAuth } from 'hono/bearer-auth';\n\nconst app = new Hono();\n\n// Built-in middleware\napp.use('*', logger());\napp.use('/api/*', cors({ origin: 'https://myapp.com' }));\napp.use('/api/admin/*', bearerAuth({ token: process.env.API_TOKEN! }));\n\n// Custom middleware\napp.use('*', async (c, next) => {\n  c.set('requestId', crypto.randomUUID());\n  await next();\n  c.header('X-Request-Id', c.get('requestId'));\n});\n```\n\n**Available built-in middleware:** `logger`, `cors`, `csrf`, `etag`, `cache`, `basicAuth`, `bearerAuth`, `jwt`, `compress`, `bodyLimit`, `timeout`, `prettyJSON`, `secureHeaders`.\n\n### Step 4: Request and Response Helpers\n\n```typescript\napp.post('/submit', async c => {\n  // Parse body\n  const body = await c.req.json<{ name: string; email: string }>();\n  const form = await c.req.formData();\n  const text = await c.req.text();\n\n  // Headers and cookies\n  const auth = c.req.header('authorization');\n  const token = getCookie(c, 'session');\n\n  // Responses\n  return c.json({ ok: true });                        // JSON\n  return c.text('hello');                             // plain text\n  return c.html('<h1>Hello</h1>');                    // HTML\n  return c.redirect('/dashboard', 302);              // redirect\n  return new Response(stream, { status: 200 });       // raw Response\n});\n```\n\n### Step 5: Zod Validator Middleware\n\n```typescript\nimport { zValidator } from '@hono/zod-validator';\nimport { z } from 'zod';\n\nconst createPostSchema = z.object({\n  title: z.string().min(1).max(200),\n  body: z.string().min(1),\n  tags: z.array(z.string()).default([]),\n});\n\napp.post(\n  '/posts',\n  zValidator('json', createPostSchema),\n  async c => {\n    const data = c.req.valid('json'); // fully typed\n    const post = await db.post.create({ data });\n    return c.json(post, 201);\n  }\n);\n```\n\n### Step 6: Route Groups and App Composition\n\n```typescript\n// src/routes/posts.ts\nimport { Hono } from 'hono';\n\nconst posts = new Hono();\n\nposts.get('/', async c => { /* list posts */ });\nposts.post('/', async c => { /* create post */ });\nposts.get('/:id', async c => { /* get post */ });\n\nexport default posts;\n```\n\n```typescript\n// src/index.ts\nimport { Hono } from 'hono';\nimport posts from './routes/posts';\nimport users from './routes/users';\n\nconst app = new Hono().basePath('/api');\n\napp.route('/posts', posts);\napp.route('/users', users);\n\nexport default app;\n```\n\n### Step 7: RPC Client (End-to-End Type Safety)\n\nHono's RPC mode exports route types that the `hc` client consumes — similar to tRPC but using fetch conventions:\n\n```typescript\n// server: src/routes/posts.ts\nimport { Hono } from 'hono';\nimport { zValidator } from '@hono/zod-validator';\nimport { z } from 'zod';\n\nconst posts = new Hono()\n  .get('/', c => c.json({ posts: [{ id: '1', title: 'Hello' }] }))\n  .post(\n    '/',\n    zValidator('json', z.object({ title: z.string() })),\n    async c => {\n      const { title } = c.req.valid('json');\n      return c.json({ id: '2', title }, 201);\n    }\n  );\n\nexport default posts;\nexport type PostsType = typeof posts;\n```\n\n```typescript\n// client: src/client.ts\nimport { hc } from 'hono/client';\nimport type { PostsType } from '../server/routes/posts';\n\nconst client = hc<PostsType>('/api/posts');\n\n// Fully typed — autocomplete on routes, params, and responses\nconst { posts } = await client.$get().json();\nconst newPost = await client.$post({ json: { title: 'New Post' } }).json();\n```\n\n## Examples\n\n### Example 1: JWT Auth Middleware\n\n```typescript\nimport { Hono } from 'hono';\nimport { jwt, sign } from 'hono/jwt';\n\nconst app = new Hono();\nconst SECRET = process.env.JWT_SECRET!;\n\napp.post('/login', async c => {\n  const { email, password } = await c.req.json();\n  const user = await validateUser(email, password);\n  if (!user) return c.json({ error: 'Invalid credentials' }, 401);\n\n  const token = await sign({ sub: user.id, exp: Math.floor(Date.now() / 1000) + 3600 }, SECRET);\n  return c.json({ token });\n});\n\napp.use('/api/*', jwt({ secret: SECRET }));\napp.get('/api/me', async c => {\n  const payload = c.get('jwtPayload');\n  const user = await getUserById(payload.sub);\n  return c.json(user);\n});\n\nexport default app;\n```\n\n### Example 2: Cloudflare Workers with D1 Database\n\n```typescript\n// src/index.ts\nimport { Hono } from 'hono';\n\ntype Bindings = {\n  DB: D1Database;\n  API_TOKEN: string;\n};\n\nconst app = new Hono<{ Bindings: Bindings }>();\n\napp.get('/users', async c => {\n  const { results } = await c.env.DB.prepare('SELECT * FROM users LIMIT 50').all();\n  return c.json(results);\n});\n\napp.post('/users', async c => {\n  const { name, email } = await c.req.json();\n  await c.env.DB.prepare('INSERT INTO users (name, email) VALUES (?, ?)')\n    .bind(name, email)\n    .run();\n  return c.json({ created: true }, 201);\n});\n\nexport default app;\n```\n\n### Example 3: Streaming Response\n\n```typescript\nimport { stream, streamText } from 'hono/streaming';\n\napp.get('/stream', c =>\n  streamText(c, async stream => {\n    for (const chunk of ['Hello', ' ', 'World']) {\n      await stream.write(chunk);\n      await stream.sleep(100);\n    }\n  })\n);\n```\n\n## Best Practices\n\n- ✅ Use route groups (sub-apps) to keep handlers in separate files — `app.route('/users', usersRouter)`\n- ✅ Use `zValidator` for all request body, query, and param validation\n- ✅ Type Cloudflare Workers bindings with the `Bindings` generic: `new Hono<{ Bindings: Env }>()`\n- ✅ Use the RPC client (`hc`) when your frontend and backend share the same repo\n- ✅ Prefer returning `c.json()`/`c.text()` over `new Response()` for cleaner code\n- ❌ Don't use Node.js-specific APIs (`fs`, `path`, `process`) if you want edge portability\n- ❌ Don't add heavy dependencies — Hono's value is its tiny footprint on edge runtimes\n- ❌ Don't skip middleware typing — use generics (`Variables`, `Bindings`) to keep `c.get()` type-safe\n\n## Security & Safety Notes\n\n- Always validate input with `zValidator` before using data from requests.\n- Use Hono's built-in `csrf` middleware on mutation endpoints when serving HTML/forms.\n- For Cloudflare Workers, store secrets in `wrangler.toml` `[vars]` (non-secret) or `wrangler secret put` (secret) — never hardcode them in source.\n- When using `bearerAuth` or `jwt`, ensure tokens are validated server-side — do not trust client-provided user IDs.\n- Rate-limit sensitive endpoints (auth, password reset) with Cloudflare Rate Limiting or a custom middleware.\n\n## Common Pitfalls\n\n- **Problem:** Handler returns `undefined` — response is empty\n  **Solution:** Always `return` a response from handlers: `return c.json(...)` not just `c.json(...)`.\n\n- **Problem:** Middleware runs after the response is sent\n  **Solution:** Call `await next()` before post-response logic; Hono runs code after `next()` as the response travels back up the chain.\n\n- **Problem:** `c.env` is undefined on Node.js\n  **Solution:** Cloudflare `env` bindings only exist in Workers. Use `process.env` on Node.js.\n\n- **Problem:** Route not matching — gets a 404\n  **Solution:** Check that `app.route('/prefix', subRouter)` uses the same prefix your client calls. Sub-routers should **not** repeat the prefix in their own routes.\n\n## Related Skills\n\n- `@cloudflare-workers-expert` — Deep dive into Cloudflare Workers platform specifics\n- `@trpc-fullstack` — Alternative RPC approach for TypeScript full-stack apps\n- `@zod-validation-expert` — Detailed Zod schema patterns used with `@hono/zod-validator`\n- `@nodejs-backend-patterns` — When you need a Node.js-specific backend (not edge)\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["hono","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity-skills"],"capabilities":["skill","source-sickn33","skill-hono","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/hono","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34768 github stars · SKILL.md body (10,316 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T18:51:28.238Z","embedding":null,"createdAt":"2026-04-18T21:38:36.868Z","updatedAt":"2026-04-23T18:51:28.238Z","lastSeenAt":"2026-04-23T18:51:28.238Z","tsv":"'/api':401,624,819 '/api/admin':406 '/api/me':824 '/api/posts':731 '/dashboard':505 '/login':781 '/posts':279,284,291,298,310,548,626 '/prefix':1214 '/routes/posts':614 '/routes/users':618 '/server/routes/posts':727 '/static':329 '/stream':925 '/submit':455 '/users':342,345,348,352,356,629,869,886,958 '1':188,536,542,687,758 '100':942 '1000':812 '2':265,705,843 '200':513,538 '201':289,568,707,910 '3':360,915 '3000':261 '302':506 '3600':813 '4':448 '401':802 '404':1209 '5':517 '50':880 '6':570 '7':635 'add':240,1022 'altern':1251 'alway':1053,1144 'anywher':52 'api':7,99,119,203,211,232,236,859,1011 'app':12,106,250,273,336,340,391,574,620,633,773,841,863,913,950,1259 'app.delete':297 'app.fetch':263 'app.get':253,278,309,328,823,868,924 'app.post':283,454,547,780,885 'app.put':290 'app.route':625,628,957,1213 'app.use':398,400,405,413,818 'approach':1253 'ask':173,1317 'async':312,414,456,552,587,592,598,696,782,825,870,887,929 'auth':480,760,1123 'author':482 'autocomplet':734 'avail':79,429 'aw':59 'await':420,462,470,474,562,742,748,787,791,805,833,874,892,894,937,940,1165 'back':1181 'backend':147,991,1273,1281 'basepath':623 'bash':196,228 'basic':276 'basicauth':439 'bearerauth':387,407,440,1100 'best':943 'better':163 'bff':150 'bffs':100 'bind':856,866,867,902,973,976,980,1043,1194 'bodi':459,461,539,965 'bodylimit':443 'boundari':1325 'build':2,114,145 'built':43,85,395,431,1067 'built-in':84,394,430,1066 'bun':20,57,140,226,237,239,244 'c':254,280,285,293,300,313,330,415,457,486,553,588,593,599,683,697,783,826,871,888,926,928 'c.env':1186 'c.env.db.prepare':875,895 'c.get':427,829,1046 'c.header':422 'c.html':500 'c.json':179,281,286,294,301,324,490,566,684,703,798,816,837,883,907,998,1151,1154 'c.redirect':504 'c.req':178 'c.req.formdata':471 'c.req.header':481 'c.req.json':463,788,893 'c.req.param':316 'c.req.query':320 'c.req.text':475 'c.req.valid':556,700 'c.set':417 'c.text':255,331,495,999 'cach':438 'call':1164,1222 'cd':208,233 'chain':337,1184 'check':1211 'choic':96 'chunk':933,939 'clarif':1319 'cleaner':1004 'clear':1292 'client':91,183,637,654,717,729,743,749,985,1114,1221 'client-provid':1113 'cloudflar':17,53,123,191,206,225,844,971,1078,1127,1192,1238,1244 'cloudflare-work':205 'cloudflare-workers-expert':1237 'code':70,1005,1174 'common':1134 'compat':26,65,168 'composit':575 'compress':442 'const':249,272,314,318,390,460,468,472,479,483,530,554,560,582,619,678,698,728,740,746,772,776,784,789,803,827,831,862,872,889,932 'consum':655 'convent':662 'cooki':478 'cor':383,402,435 'creat':198,287,594,908 'createpostschema':531,551 'createus':346 'credenti':801 'criteria':1328 'crypto.randomuuid':419 'csrf':436,1069 'custom':411,1132 'd1':847 'd1database':858 'data':555,564,1060 'databas':848 'date.now':811 'db':857 'db.post.create':563 'deep':1241 'default':259,335,546,603,632,709,840,912 'delet':302,355 'deleteus':358 'deno':19,55,125 'depend':1024 'deploy':56,122,126,222,223 'describ':1296 'detail':1264 'dev':216,219 'dive':1242 'edg':98,121,167,195,1018,1033,1283 'email':466,785,793,891,900,904 'empti':1142 'end':639,641 'end-to-end':638 'endpoint':1073,1122 'ensur':1103 'env':981,1193 'environ':1308 'environment-specif':1307 'error':799 'etag':437 'exact':365 'exampl':756,757,842,914 'exist':1196 'exp':809 'expert':1240,1263,1313 'export':258,334,602,631,648,708,711,839,911 'express':160 'fast':5 'fastest':78 'fetch':49,262,367,661 'file':333,956 'flame':34 'footprint':1031 'form':469 'format':319,321,326 'framework':30,42,138 'frontend':149,989 'fs':1012 'full':10,104,1257 'full-stack':9,103,1256 'fulli':558,732 'fullstack':1250 'generic':977,1041 'get':341,347,600,682,744,1207 'getcooki':485 'getus':350 'getuserbyid':834 'group':572,947 'handler':372,953,1137,1149 'hardcod':1094 'hc':181,653,720,730,986 'header':476 'heavi':1023 'hello':256,496,501,689,935 'helper':452 'hono':1,14,28,32,71,175,199,241,246,248,252,257,269,271,275,362,375,377,393,579,581,585,608,610,622,644,667,669,681,764,766,775,852,854,865,979,1025,1064,1172 'hono/bearer-auth':389 'hono/client':722 'hono/cors':385 'hono/jwt':771 'hono/logger':381 'hono/streaming':923 'hono/zod-validator':525,673,1270 'html':502 'html/forms':1076 'id':292,299,311,315,317,325,349,353,357,426,597,686,704,1117 'import':245,268,374,378,382,386,522,526,578,607,611,615,666,670,674,719,723,763,767,851,919 'init':238 'input':1055,1322 'insert':896 'instal':213 'interceptor':368 'invalid':800 'japanes':36 'json':322,493,550,557,692,701,745,751,755 'jsx':87 'jwt':441,759,768,820,1102 'jwtpayload':830 'keep':952,1045 'lambda':60 'latenc':154 'latest':200 'layer':151 'lightweight':102 'like':366 'limit':879,1120,1129,1284 'list':589 'listus':343 'local':218 'logger':379,399,434 'logic':1171 'low':153 'make':92 'match':1206,1293 'math.floor':810 'max':537 'method':277 'middlewar':82,177,361,363,397,412,433,520,761,1038,1070,1133,1156 'migrat':158 'min':535,541 'minim':132 'miss':1330 'mkdir':229 'mode':647 'mutat':1072 'my-api':201,209,230,234 'myapp.com':404 'name':464,890,899,903 'need':130,1277 'never':1093 'new':251,274,392,509,584,621,680,753,774,864,978,1001 'newpost':747 'next':416,421,1166,1176 'node.js':21,58,142,227,1009,1190,1202,1279 'nodej':1272 'nodejs-backend-pattern':1271 'non':1086 'non-secret':1085 'note':1052 'npm':197,212,214,220 'ok':491 'one':75 'origin':403 'output':1302 'overview':31 'param':305,737,968 'pars':458 'password':786,794,1124 'patch':351 'path':1013 'pattern':1267,1274 'payload':828 'payload.sub':835 'permiss':1323 'pitfal':1135 'plain':497 'platform':1246 'port':260 'portabl':1019 'post':282,344,561,567,583,590,595,601,604,612,627,679,685,690,710,715,741,750,754,1169 'post-respons':1168 'posts.get':586,596 'posts.post':591 'poststyp':713,725 'practic':944 'prefer':996 'prefix':1219,1230 'prettyjson':445 'problem':1136,1155,1185,1203 'process':1014 'process.env':1200 'process.env.api':409 'process.env.jwt':778 'project':189 'provid':1115 'put':1091 'queri':307,966 'rate':1119,1128 'rate-limit':1118 'raw':514 'recommend':193 'redirect':507 'relat':1235 'repeat':1228 'repo':995 'request':47,425,449,964,1062 'requestid':418,428 'requir':155,1321 'reset':1125 'respons':48,451,488,510,515,739,917,1002,1140,1147,1160,1170,1179 'rest':116 'result':873,884 'return':323,489,494,499,503,508,565,702,797,815,836,882,906,997,1138,1145,1150 'review':1314 'rout':176,266,304,338,571,649,736,946,1204,1234 'router':73,1225 'rpc':90,118,182,636,646,984,1252 'run':15,51,215,221,905,1157,1173 'runtim':27,66,1034 'safe':136,1049 'safeti':643,1051,1324 'schema':1266 'scope':1295 'secret':777,779,814,821,822,1081,1087,1090,1092 'secur':1050 'securehead':446 'select':204,876 'sensit':1121 'sent':1162 'separ':955 'serv':1075 'server':137,664,1108 'server-sid':1107 'session':487 'setup':190 'share':992 'side':1109 'sign':769,806 'similar':656 'skill':111,1236,1287 'skill-hono' 'skip':1037 'small':39 'solut':1143,1163,1191,1210 'sourc':1097 'source-sickn33' 'specif':1010,1247,1280,1309 'src/client.ts':718 'src/index.ts':243,606,850 'src/routes/posts.ts':577,665 'stack':11,105,1258 'standard':46 'static':332 'status':512 'step':187,264,359,447,516,569,634 'stop':1315 'store':1080 'stream':511,916,920,930 'stream.sleep':941 'stream.write':938 'streamtext':921,927 'string':308,465,467,861 'strong':95 'sub':807,949,1224 'sub-app':948 'sub-rout':1223 'subrout':1215 'substitut':1305 'success':1327 'support':88,165 'system':83 'tag':543 'task':1291 'test':1311 'text':473,498 'timeout':444 'tini':1030 'titl':533,688,694,699,706,752 'token':408,410,484,804,817,860,1104 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'travel':1180 'treat':1300 'trpc':658,1249 'trpc-fullstack':1248 'true':288,296,303,492,909 'trust':1112 'type':135,559,642,650,712,724,733,855,970,1039,1048 'type-saf':134,1047 'typeof':714 'typescript':164,242,267,339,373,453,521,576,605,663,716,762,849,918,1255 'ultra':4 'ultra-fast':3 'ultrafast':40 'undefin':1139,1188 'updat':295 'updateus':354 'use':109,112,127,143,156,169,660,945,960,982,1008,1040,1059,1063,1099,1199,1216,1268,1285 'user':172,616,630,790,796,832,838,878,898,1116 'user.id':808 'usersrout':959 'valid':519,969,1054,1106,1262,1310 'validateus':792 'valu':901,1027 'var':1084 'variabl':1042 'want':162,1017 'web':6,29,41,45 'wildcard':327 'wintercg':25,64 'wintercg-compat':24,63 'work':186,364 'worker':18,54,124,192,207,845,972,1079,1198,1239,1245 'world':936 'wrangler':217,1089 'wrangler.toml':1083 'x':424 'x-request-id':423 'z':527,675 'z.array':544 'z.object':532,693 'z.string':534,540,545,695 'zod':518,529,677,1261,1265 'zod-validation-expert':1260 'zvalid':523,549,671,691,961,1057 '炎':33","prices":[{"id":"ac63485f-136b-4367-8b18-405622347878","listingId":"f8307b14-34aa-4c96-a131-b24070c3a653","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:38:36.868Z"}],"sources":[{"listingId":"f8307b14-34aa-4c96-a131-b24070c3a653","source":"github","sourceId":"sickn33/antigravity-awesome-skills/hono","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/hono","isPrimary":false,"firstSeenAt":"2026-04-18T21:38:36.868Z","lastSeenAt":"2026-04-23T18:51:28.238Z"}],"details":{"listingId":"f8307b14-34aa-4c96-a131-b24070c3a653","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"hono","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34768,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-23T06:41:03Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"5911d3605ef27152e2e6d40628e08e40fc477126","skill_md_path":"skills/hono/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/hono"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"hono","description":"Build ultra-fast web APIs and full-stack apps with Hono — runs on Cloudflare Workers, Deno, Bun, Node.js, and any WinterCG-compatible runtime."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/hono"},"updatedAt":"2026-04-23T18:51:28.238Z"}}