Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 22 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,35 @@ Works with Hono and Elysia. No overhead — 1,000 objects with includes in under

*t7m = t(ransfor)m - 7 letters between t and m*

## AI Agent Skill
## AI Agent Skills

t7m ships with a [Claude Code skill](https://code.claude.com/docs/en/skills) that teaches AI coding agents how to build transformers correctly — includes, cache, props, nested transformers, and framework integration.
t7m ships with skills that teach AI coding agents how to build transformers correctly — includes, cache, props, nested transformers, and framework integration.

Install it with the [Vercel Skills CLI](https://github.com/vercel-labs/skills):
### Using [@tanstack/intent](https://github.com/tanstack/intent)

If you use an AI coding agent, discover and install t7m's skills automatically:

```bash
# List available skills from installed packages
npx @tanstack/intent@latest list

# Generate skill mappings for your agent config (AGENTS.md, CLAUDE.md, .cursorrules, etc.)
npx @tanstack/intent@latest install
```

Skills are versioned with t7m — the guidance always matches the library version you have installed.

### Using [Vercel Skills CLI](https://github.com/vercel-labs/skills)

```bash
npx skills add tkoehlerlg/t7m
```

This works with Claude Code, Cursor, Codex, and other agents that support the open agent skills standard.
### Claude Code Skill

t7m also ships with a [Claude Code skill](https://code.claude.com/docs/en/skills) in `.claude/skills/build-transformer/` — it's loaded automatically when Claude Code detects t7m usage in your project.

All methods work with Claude Code, Cursor, Codex, and other agents that support agent skills.

## Quick Start

Expand Down
20 changes: 20 additions & 0 deletions bin/intent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/env node
// Auto-generated by @tanstack/intent setup
// Exposes the intent end-user CLI for consumers of this library.
// Commit this file, then add to your package.json:
// "bin": { "intent": "./bin/intent.js" }
try {
await import('@tanstack/intent/intent-library')
} catch (e) {
if (e?.code === 'ERR_MODULE_NOT_FOUND' || e?.code === 'MODULE_NOT_FOUND') {
console.error('@tanstack/intent is not installed.')
console.error('')
console.error('Install it as a dev dependency:')
console.error(' npm add -D @tanstack/intent')
console.error('')
console.error('Or run directly:')
console.error(' npx @tanstack/intent@latest list')
process.exit(1)
}
throw e
}
5 changes: 5 additions & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

178 changes: 96 additions & 82 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,84 +1,98 @@
{
"name": "t7m",
"module": "dist/index.js",
"type": "module",
"author": {
"name": "Torben Koehler"
},
"license": "MIT-NSR",
"version": "1.0.0",
"description": "Transformer for Elysia and Hono",
"repository": {
"type": "git",
"url": "git+https://github.com/tkoehlerlg/t7m.git"
},
"bugs": {
"url": "https://github.com/tkoehlerlg/t7m/issues"
},
"homepage": "https://github.com/tkoehlerlg/t7m#readme",
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
},
"./hono": {
"import": "./dist/hono/index.js",
"types": "./dist/hono/index.d.ts"
},
"./elysia": {
"import": "./dist/elysia/index.js",
"types": "./dist/elysia/index.d.ts"
},
"./*": null
},
"typesVersions": {
"*": {
"hono": ["./dist/hono/index.d.ts"],
"elysia": ["./dist/elysia/index.d.ts"]
}
},
"types": "dist/index.d.ts",
"files": ["dist"],
"scripts": {
"build": "rm -rf dist && tsc --declaration --emitDeclarationOnly --outDir dist && NODE_ENV=production bun build src/index.ts src/hono/index.ts src/elysia/index.ts --outdir dist --target node --external hono --external elysia",
"dev": "bun --watch src/index.ts",
"format": "biome format --write",
"lint": "biome lint && biome check",
"lint:fix": "biome lint --fix && biome check --fix",
"lint:fix:unsafe": "biome lint --fix --unsafe && biome check --fix",
"typecheck": "tsc --noEmit",
"test": "bun test",
"test:coverage": "bun test --coverage --coverage-reporter=lcov --coverage-reporter=text",
"prepublishOnly": "bun format && NODE_ENV=production bun run build && bun run test"
},
"devDependencies": {
"@biomejs/biome": "2.4.6",
"@types/bun": "^1.2.17",
"elysia": "^1.2",
"hono": "^4"
},
"peerDependencies": {
"typescript": "^5",
"elysia": "^1.2",
"hono": "^4"
},
"peerDependenciesMeta": {
"elysia": {
"optional": true
},
"hono": {
"optional": true
}
},
"keywords": [
"elysia",
"hono",
"transformer",
"typescript",
"web-framework",
"api",
"middleware",
"type-safe",
"route-handler"
]
"name": "t7m",
"module": "dist/index.js",
"type": "module",
"author": {
"name": "Torben Koehler"
},
"license": "MIT-NSR",
"version": "1.0.0",
"description": "Transformer for Elysia and Hono",
"repository": {
"type": "git",
"url": "git+https://github.com/tkoehlerlg/t7m.git"
},
"bugs": {
"url": "https://github.com/tkoehlerlg/t7m/issues"
},
"homepage": "https://github.com/tkoehlerlg/t7m#readme",
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
},
"./hono": {
"import": "./dist/hono/index.js",
"types": "./dist/hono/index.d.ts"
},
"./elysia": {
"import": "./dist/elysia/index.js",
"types": "./dist/elysia/index.d.ts"
},
"./*": null
},
"typesVersions": {
"*": {
"hono": [
"./dist/hono/index.d.ts"
],
"elysia": [
"./dist/elysia/index.d.ts"
]
}
},
"types": "dist/index.d.ts",
"files": [
"dist",
"skills",
"bin",
"!skills/_artifacts"
],
"scripts": {
"build": "rm -rf dist && tsc --declaration --emitDeclarationOnly --outDir dist && NODE_ENV=production bun build src/index.ts src/hono/index.ts src/elysia/index.ts --outdir dist --target node --external hono --external elysia",
"dev": "bun --watch src/index.ts",
"format": "biome format --write",
"lint": "biome lint && biome check",
"lint:fix": "biome lint --fix && biome check --fix",
"lint:fix:unsafe": "biome lint --fix --unsafe && biome check --fix",
"typecheck": "tsc --noEmit",
"test": "bun test",
"test:coverage": "bun test --coverage --coverage-reporter=lcov --coverage-reporter=text",
"prepublishOnly": "bun format && NODE_ENV=production bun run build && bun run test"
},
"devDependencies": {
"@biomejs/biome": "2.4.6",
"@tanstack/intent": "^0.0.19",
"@types/bun": "^1.2.17",
"elysia": "^1.2",
"hono": "^4"
},
"peerDependencies": {
"typescript": "^5",
"elysia": "^1.2",
"hono": "^4"
},
"peerDependenciesMeta": {
"elysia": {
"optional": true
},
"hono": {
"optional": true
}
},
"keywords": [
"elysia",
"hono",
"transformer",
"typescript",
"web-framework",
"api",
"middleware",
"type-safe",
"route-handler",
"tanstack-intent"
],
"bin": {
"intent": "./bin/intent.js"
}
}
Loading
Loading