scaffold-hono-service
Skill7 starsChanged 17 days agoMITView on GitHub
Use when starting a TypeScript HTTP API or adding a service to a repo with no Hono app yet — scaffolds a strict-TS Hono service with validated config, problem+json errors, OpenAPI from route schemas, health/readiness and graceful shutdown, runnable on Node.
- Reads credentials
- Installs packages
2 other projects use a version of this.
Adopted by
Most recently taken up by
- naman10parikh/turbotheir own version, first seen Oct 25, 2026
- VelimirMueller/claude-skillsword for word, first seen Oct 11, 2026
Other versions2 projects use a version of this.
Word for word · 1
- VelimirMueller/claude-skills★ 7100% same
Edited · 0
None found.
Wrote their own version · 1
- naman10parikh/turbo★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository156 other files it gives its agents.
- skills/swift/swiftui-design-principles/AGENTS.mdAGENTS.md
- skills/swift/ios-code-audit/CLAUDE.mdCLAUDE.md
- skills/swift/swift-focusengine-pro/llms.txtllms.txt
- build-llm-seamSkill
- build-mcp-serverSkill
- build-rag-pipelineSkill
- secure-llm-featuresSkill
- set-up-llm-evalsSkill
- build-nextjs-backendSkill
- build-supabase-edge-functionSkill
- configure-backend-testsSkill
- design-http-apiSkill
- harden-backendSkill
- scaffold-fastapi-serviceSkill
- scaffold-go-serviceSkill
- secure-supabase-rlsSkill
- set-up-backend-authSkill
- set-up-background-jobsSkill
- set-up-databaseSkill
- set-up-nextjs-supabase-authSkill
- set-up-observabilitySkill
- set-up-supabaseSkill
- build-cliSkill
- release-cliSkill
- set-up-dev-toolchainSkill
- audit-securitySkill
- audit-toolchainSkill
- extend-skillsetSkill
- promote-releaseSkill
- set-up-stack-profileSkill
- write-commit-messagesSkill
- write-pull-requestsSkill
- analyze-complexitySkill
- apply-algorithmsSkill
- apply-design-patternsSkill
- apply-design-principlesSkill
- apply-solidSkill
- choose-data-structureSkill
- debug-systematicallySkill
- enforce-dependency-ruleSkill
- refactor-safelySkill
- slice-and-estimateSkill
- write-clean-testsSkill
- write-readable-codeSkill
- clean-frontend-scaffoldingSkill
- configure-accessibilitySkill
- configure-analyticsSkill
- configure-ciSkill
- configure-error-trackingSkill
- configure-lintingSkill
- configure-test-stackSkill
- configure-typescriptSkill
- create-moduleSkill
- optimize-performanceSkill
- scaffold-frontend-projectSkill
- set-up-authSkill
- set-up-design-systemSkill
- set-up-document-headSkill
- set-up-error-boundariesSkill
- set-up-feature-flagsSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 19
Read the profile first; detect only what it leaves open (merge rules: stack-profile.md).
- Distinctive: line 53
Create the files from hono-files.md, skipping any that exist:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Scaffold Hono Service
Layering, seams and rationale: hono-patterns.md. Full file contents: hono-files.md. Shared standards: service-layout.md, config.md, stack-versions.md.
1. Audit (change nothing)
cat .claude/stack-profile.md ~/.claude/stack-profile.md 2>/dev/null # profile: backend.track, package_manager, tests.layout, hosting, database, observability
ls package.json tsconfig.json biome.json pnpm-workspace.yaml src/app.ts src/main.ts src/config.ts 2>/dev/null
ls pnpm-lock.yaml package-lock.json bun.lock yarn.lock 2>/dev/null
grep -E '"(hono|express|fastify|@nestjs/core|next)"' package.json 2>/dev/nullRead the profile first; detect only what it leaves open (merge rules: stack-profile.md).
backend.trackis set and is nothono: stop. Say which track the profile names and suggest the matching scaffold skill, orset-up-stack-profileif the profile is wrong.backend.trackis unset, andexpress,fastifyor@nestjs/coreis present: ask one question ("add a Hono service next to it, or migrate?"). Otherwise do not ask.
2. Decide
- No
honodependency and nosrc/app.ts: full scaffold (steps 3 to 7). honopresent: diff against hono-files.md and add only what is missing (config, problem+json handler, readiness, shutdown, OpenAPI, tests). Never overwrite a file you did not create: show the delta and apply it by hand.- Everything present and step 7 passes: report "already in place" and stop.
3. Detect track
| Question | Source | Default |
| Package manager | package_manager in the profile, else the lockfile | pnpm |
| Where does it live | pnpm-workspace.yaml or workspaces present: apps/<svc> or services/<svc>; else the repo root | repo root |
| Test layout | tests.layout | tests-dir: tests/. colocated: src/**/*.test.ts and include: ['src/**/*.test.ts'] in vitest.config.ts |
| Runtime target | hosting | Node. vercel, Cloudflare, Bun: see step 6 |
| Database | database.orm | none yet. drizzle: add the DB seam via the Drizzle skill of this catalogue, then a readiness check |
| Observability | observability.otel | true: start the SDK before the logger is created (observability.md) |
| Runtime pin | runtime_manager | .nvmrc with 24, plus engines.node |
4. Install only what is missing
pnpm add hono @hono/node-server @hono/zod-openapi zod pino
pnpm add -D -E @biomejs/biome
pnpm add -D typescript@~7.0 tsx tsdown vitest @types/node@^24Replace pnpm add with the profile's manager. Check each line against stack-versions.md and npm view <pkg> version. @hono/zod-openapi requires zod 4; do not install Zod 3.
5. Generate the seams
Create the files from hono-files.md, skipping any that exist:
src/config.ts validated env, parsed once
src/platform/{logger,clock,problem}.ts
src/repository/*.repository.ts the only layer that touches storage
src/service/*.service.ts use cases, no Hono types
src/transport/*.routes.ts createRoute + handlers
src/app.ts createApp(deps): routes, OpenAPI, notFound, onError
src/main.ts composition root, serve(), graceful shutdown
tests/app.test.ts app.request(), no port
tsconfig.json biome.json tsdown.config.ts vitest.config.ts .env.example .gitignoreRename notes to the first real module, or keep it as the worked example until one exists.
6. Wire
package.json:
{
"type": "module",
"engines": { "node": ">=24.0.0" },
"scripts": {
"dev": "tsx watch --env-file-if-exists=.env src/main.ts",
"build": "tsdown",
"start": "node dist/main.mjs",
"typecheck": "tsc --noEmit",
"lint": "biome check .",
"format": "biome check --write .",
"test": "vitest run",
"openapi": "tsx scripts/print-openapi.ts > openapi.json"
}
}task_runnerisjustormise: expose the same names as recipes or tasks instead of duplicating logic.- Readiness: push one
{ name, check }per dependency intoreadinessChecksinmain.ts. Liveness stays dependency-free. - Shutdown: add pool close and telemetry flush inside the
server.closecallback, in that order. - Other runtimes: keep
createApp; replacemain.tswith the platform entry. Vercel and Cloudflare:export default createApp(deps)in the entry file the platform names (Vercel:src/index.ts). Bun:export default { port, fetch: app.fetch }. There is no long-lived process on serverless, so drop the shutdown code and builddepsper isolate. Details: hono-patterns.md. - pnpm 12 reports
ERR_PNPM_IGNORED_BUILDSif a dependency has a build script. The scaffold has none; do not approve builds you did not review. - CI, Docker and deploy are out of scope here; the
devcoreandinfraskillsplugins own them.
7. Verify
pnpm typecheck && pnpm lint && pnpm test # expect: no tsc output, "No fixes applied", "5 passed"
pnpm build && PORT=3111 node dist/main.mjs & # expect a JSON line with "message":"listening"
curl -si localhost:3111/notes/nope # expect 404 and content-type: application/problem+json
curl -s localhost:3111/readyz # expect {"status":"ok"}
curl -s localhost:3111/openapi.json | head -c 80 # expect {"openapi":"3.1.0",...
PORT=abc node dist/main.mjs # expect a thrown "Invalid configuration" listing PORT, exit 1
kill -TERM %1 # expect "shutting down" in the log, exit code 0A second run of this skill finds everything in place and changes nothing.
References
- hono-patterns.md: why each choice, when to deviate.
- hono-files.md: the files.
- service-layout.md, config.md: the cross-language standards.
- logging-contract.md, security-baseline.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

