【免费下载链接】autoskillsOne command. Your entire AI skill stack. Installed.项目地址https://gitcode.com/gh_mirrors/au/autoskills点击查看免费下载本文基于 autoskills 仓库中收录的 deno-typescript 技能文档系统讲解在 Deno 运行时下使用 TypeScript 的完整开发规范涵盖编码风格、项目结构、模块系统、安全权限模型、HTTP 服务、数据库集成、测试与内置工具链等核心主题。读完本文你将掌握一套可直接落地的 Deno TypeScript 工程实践并能理解 autoskills 如何在检测到 Deno 项目时自动为你安装这套技能。一、技能背景deno-typescript 在 autoskills 中的定位autoskills 是一个一条命令安装整套 AI 技能栈的工具它会扫描项目中的package.json、锁文件与各类配置文件自动检测技术栈并为 Cursor、Claude Code 等 AI 编码助手安装对应的技能SKILL使其真正理解你的项目。deno-typescript正是其中面向 Deno 开发者的核心技能之一。从仓库源码可以确认该技能的收录与分发链路检测规则定义在 skills-map.ts当项目存在deno.json、deno.jsonc或deno.lock时autoskills 判定为 Deno 项目并推荐 6 个技能其中包含mindrally/skills/deno-typescript技能清单与来源记录在 skills-registry/index.json来源为mindrally/skills收录了单个SKILL.md文件并附有 SHA-256 校验与审核记录安装行为由 installer.ts 实现技能最终被安装到项目根目录的.agents/skills/skill-name/SKILL.md安装前会先校验本地副本完整性失败再走缓存或下载检测逻辑有测试兜底在 tests/cli.test.ts 中写入deno.json后执行--dry-run断言输出包含Deno、deno-expert与deno-typescript。此外仓库还为 Deno 准备了完整的技能矩阵deno-expert专家级代码评审与调试、deno-guidance项目初始化与 CLI 基础、deno-frontend、deno-deploy边缘部署与deno-sandbox安全沙箱执行。deno-typescript侧重用 TypeScript 写 Deno 应用的编码层规范与它们互为补充。二、TypeScript 通用编码规范deno-typescript首先给出了一套与运行时无关的 TypeScript 编码纪律这是所有 Deno 代码的基础。2.1 基本原则所有代码与文档使用英文变量与函数必须显式声明类型含参数与返回值避免使用any类型需要时创建必要的具体类型使用 JSDoc 为公共类与方法撰写文档注释编写简洁、可维护、技术准确的代码优先使用函数式与声明式编程模式无需任何构建配置——Deno 原生直接运行 TypeScript。最后一点是 Deno 与 Node.js 工作流最本质的差异没有tsconfig编译前置、没有打包器介入.ts文件即写即跑。2.2 命名规范对象约定类、类型、接口PascalCase变量、函数、方法camelCase文件与目录名kebab-case环境变量UPPERCASE布尔语义变量使用助动词如isLoading、hasError、canDelete函数命名以动词开头2.3 函数设计函数保持短小、单一职责简单操作优先使用箭头函数异步操作统一使用async/await多参数场景优先采用 RO-ROReceive an Object, Return an Object模式即收一个对象、返一个对象避免过长参数列表。2.4 类型与接口描述对象形状时优先使用interface而非type避免使用enum改用const对象配合as const声明运行时校验使用 Zod并通过z.infer推导静态类型不可变属性使用readonly修饰。三、Deno 项目结构规范技能文档给出了一套推荐目录结构将路由、中间件、服务、类型、工具分层隔离src/ routes/ {resource}/ mod.ts handlers.ts validators.ts middleware/ auth.ts logger.ts services/ {domain}_service.ts types/ mod.ts utils/ mod.ts deps.ts main.ts deno.json这套结构的关键设计意图每个资源路由自成目录handlers.ts只做请求分发validators.ts承载 Zod 校验逻辑deps.ts作为全项目唯一的依赖出口集中管理第三方导入main.ts作为程序入口只做装配。配合根目录deno.json一个 Deno 项目的边界就非常清晰。四、模块系统deps.ts 与 import mapDeno 使用原生 ES Modules且必须带显式文件扩展名如./user_service.ts不可省略.ts。技能文档强调两种集中管理依赖的方式4.1 deps.ts 集中导出模式// deps.ts - centralized dependencies export { serve } from https://deno.land/std0.208.0/http/server.ts; export { z } from https://deno.land/x/zodv3.22.4/mod.ts;所有业务模块只从deps.ts导入杜绝散落在各文件的裸 URL 依赖升级依赖时只需改动一个文件。4.2 deno.json 中的 import map{ imports: { std/: https://deno.land/std0.208.0/, hono: https://deno.land/x/honov3.11.7/mod.ts } }在deno.json的imports字段中为常用依赖定义别名后业务代码即可使用裸标识符import { serve } from std/http/server.ts。需要注意的版本语境deno-typescript技能文档中的示例使用了基于 URL 的导入写法而本仓库配套的 deno-guidance 与 deno-expert 两份技能则明确强调当前官方推荐优先级为JSR 包jsr:优先 → npm 包npm:其次 → 旧的 URL 式注册表已废弃。标准库统一位于 JSR 的std/命名空间下例如import { serve } from std/http。实际新建项目时建议采用 JSR 裸标识符配合deno add jsr:std/http管理依赖与最新生态保持一致。五、安全模型默认安全的权限系统Deno 默认拒绝一切权限这是其安全模型的核心。运行程序时必须以命令行参数显式授权技能文档给出了权限 flag 的完整清单# Run with specific permissions deno run --allow-net --allow-read./data --allow-env main.ts # Permission flags --allow-netexample.com # Network access to specific domains --allow-read./path # File read access --allow-write./path # File write access --allow-envAPI_KEY # Environment variable access --allow-runcmd # Subprocess execution注意每个 flag 都支持最小化授权--allow-netexample.com只放行指定域名--allow-read./path只开放指定目录--allow-envAPI_KEY只暴露指定变量。原则是按需申请最小授权。除命令行参数外还可以在运行时通过 API 动态请求权限// Programmatic permission requests const status await Deno.permissions.request({ name: net, host: api.example.com }); if (status.state granted) { // Network access granted }返回的status.state取值可为granted、denied或prompt程序可据此决定后续分支。配套的 deno-guidance 还提醒忘记加权限 flag 时 Deno 会提示 Requires net access 之类的错误此时应显式授予代码所需的精确权限而不是用--allow-all一刀切。六、HTTP 服务用 Deno.serve 快速起服务技能文档推荐使用运行时内置的Deno.serve编写 HTTP 服务无需任何框架依赖// Simple HTTP server Deno.serve({ port: 8000 }, (req) { const url new URL(req.url); if (url.pathname /api/users req.method GET) { return Response.json({ users: [] }); } return new Response(Not Found, { status: 404 }); });要点解析处理函数接收标准Request对象返回标准Response对象完全基于 Web 标准使用new URL(req.url)解析路径与查询参数实现简单的路由分发直接返回Response.json(...)即可输出 JSON省去手动设置Content-Type的样板代码{ port: 8000 }为选项对象还可配置hostname、onListen等。七、使用 Hono 框架构建路由当路由规模增长可引入 Hono 获得更完善的中间件与路由体验。技能文档展示了最简集成方式import { Hono } from https://deno.land/x/hono/mod.ts; const app new Hono(); app.get(/, (c) c.text(Hello Deno!)); app.get(/api/users, (c) c.json({ users: [] })); Deno.serve(app.fetch);Hono 的路由处理器返回响应对象c.text、c.json应用本身暴露app.fetch方法可以直接交给Deno.serve托管两者无缝衔接。从源码结构看这一模式把框架路由与运行时 HTTP 服务的职责彻底解耦后续若需要迁移到其他运行时app.fetch依然可复用。八、使用 Fresh 全栈框架对于需要服务端渲染SSR的完整应用技能文档推荐 Fresh——一个基于岛屿架构Islands Architecture的 Deno 原生全栈框架// routes/index.tsx import { PageProps } from $fresh/server.ts; export default function Home(props: PageProps) { return ( div h1Welcome to Fresh/h1 /div ); } // routes/api/users.ts import { Handlers } from $fresh/server.ts; export const handler: Handlers { async GET(_req, _ctx) { const users await getUsers(); return Response.json(users); }, };Fresh 采用文件路由约定routes/index.tsx对应首页组件routes/api/users.ts通过导出的handler对象声明式定义 API 端点GET、POST等方法各一个属性。这种路由文件即页面、API 与 UI 同目录的组织方式与技能文档第三节的项目结构规范一脉相承。九、数据库集成内置的 Deno KV技能文档推荐使用 Deno 内置的键值存储 Deno KV 处理轻量数据持久化无需单独部署数据库// Using Deno KV (built-in key-value store) const kv await Deno.openKv(); // Set a value await kv.set([users, 1], { name: John, email: johnexample.com }); // Get a value const result await kv.get([users, 1]); console.log(result.value); // List values const entries kv.list({ prefix: [users] }); for await (const entry of entries) { console.log(entry.key, entry.value); }关键 API 语义键是数组形式的层级路径如[users, 1]天然支持按前缀组织数据kv.set可存入任意可序列化对象kv.get返回带value的KvEntrykv.list({ prefix: [...] })返回异步迭代器配合for await可流式遍历某一前缀下的全部记录数据一致性由 Deno 运行时保证kv.set在并发冲突时返回versionstamp可做乐观锁。十、环境变量读取访问环境变量必须配合--allow-env权限// Access environment variables (requires --allow-env) const apiKey Deno.env.get(API_KEY);需要读取本地.env文件时可结合标准库的 dotenv 模块import { load } from https://deno.land/std/dotenv/mod.ts; const env await load();Deno.env.get()是运行时内置 APIload()则负责解析.env文件内容并合并进当前环境。生产环境建议直接将API_KEY这类敏感值注入进程环境避免把密钥写入仓库。十一、使用内置测试运行器Deno 自带测试运行器支持 BDD 风格describe/it与断言库技能文档给出了完整的服务测试示例// user_test.ts import { assertEquals, assertRejects } from https://deno.land/std/assert/mod.ts; import { describe, it, beforeEach } from https://deno.land/std/testing/bdd.ts; import { getUser, createUser } from ./user_service.ts; describe(User Service, () { beforeEach(() { // Setup }); it(should create a user, async () { const user await createUser({ name: John, email: johnexample.com }); assertEquals(user.name, John); }); it(should throw for invalid email, async () { await assertRejects( () createUser({ name: John, email: invalid }), Error, Invalid email ); }); }); // Run tests // deno test --allow-net --allow-read要点assertEquals用于值断言assertRejects用于断言异步操作抛出指定错误可附带错误类型与消息describe/it/beforeEach提供 BDD 组织能力beforeEach中做测试前置准备测试文件按*_test.ts约定命名deno test自动发现若被测代码需要网络或文件访问运行测试时必须带对应权限 flagdeno test --allow-net --allow-read。十二、内置工具链fmt / lint / check / bundle / compile / doc / infoDeno 将现代工程工具全部内置无需安装任何第三方工具链# Formatting deno fmt # Linting deno lint # Type checking deno check main.ts # Bundle deno bundle main.ts bundle.js # Compile to executable deno compile --allow-net main.ts # Documentation generation deno doc main.ts # Dependency inspection deno info main.ts各命令用途deno fmt格式化全部源码配套 deno-guidance 建议在 CI 中使用deno fmt --check只校验不修改避免 CI 悄悄改文件deno lint静态检查默认启用recommended规则集deno check main.ts全量类型检查运行时本身会做增量类型检查check用于显式全量校验deno bundle将入口及其依赖打包为单一 JS 文件deno compile编译为独立可执行二进制含运行时携带所需权限 flag 即可分发部署deno doc从 JSDoc 注释生成文档也可deno doc package查看任意 JSR/npm 包的本地文档deno info分析入口的依赖图与模块缓存位置。十三、deno.json 配置详解deno.json是 Deno 的配置文件功能类似package.json但更精简技能文档给出了一个完整的配置示例{ tasks: { dev: deno run --watch --allow-net --allow-env main.ts, start: deno run --allow-net --allow-env main.ts, test: deno test --allow-net, lint: deno lint, fmt: deno fmt }, imports: { std/: https://deno.land/std0.208.0/, /: ./src/ }, compilerOptions: { strict: true, lib: [deno.window] }, lint: { rules: { tags: [recommended] } }, fmt: { indentWidth: 2, singleQuote: true } }逐项说明字段作用tasks定义任务脚本用deno task dev等命令调用--watch开启文件监听热重载importsimport mapstd/映射标准库前缀/映射本地src/目录别名compilerOptions传递给 TypeScript 编译器的选项strict: true开启严格模式lib: [deno.window]声明 Deno 运行时的全局类型lint.rules.tags指定启用的规则集recommended为官方推荐集合fmt格式化偏好缩进宽度 2、使用单引号配套的 deno-guidance 还补充了两个实用配置用exclude在顶层排除目录如[build/]或分别在fmt/lint下排除特定目录避免构建产物被格式化或检查。十四、错误处理模式技能文档给出了一套面向 HTTP 服务的统一错误处理范式自定义错误类 顶层 try/catch 结构化 JSON 响应。class AppError extends Error { constructor( message: string, public statusCode: number 500, public code: string INTERNAL_ERROR ) { super(message); this.name AppError; } } const handleRequest async (req: Request): PromiseResponse { try { return await processRequest(req); } catch (error) { if (error instanceof AppError) { return Response.json( { error: error.message, code: error.code }, { status: error.statusCode } ); } console.error(error); return Response.json( { error: Internal Server Error }, { status: 500 } ); } };设计要点AppError通过构造函数参数同时携带业务错误消息、HTTP 状态码与机器可读的错误码默认值分别兜底为500与INTERNAL_ERROR业务层抛出AppError时统一转换为{ error, code }的 JSON 响应并映射对应状态码未知异常记录console.error后返回通用500响应避免向客户端泄露内部细节。十五、拥抱 Web 标准与性能实践15.1 Web 标准 APIDeno 全面拥抱 Web 标准技能文档明确建议优先使用以下内置 API 而非第三方库fetch()发起 HTTP 请求Request与Response对象承载请求与响应URL与URLSearchParams解析地址与查询参数Web Crypto API处理加密Streams API处理数据流FormData处理 multipart 表单数据。这套 API 与浏览器环境完全一致意味着写一次代码即可在浏览器与 Deno 之间复用认知。15.2 性能实践清单大数据处理使用 Web Streams边读边处理、降低内存峰值高频键值读写利用 Deno KV 的内置存储高并发 HTTP 场景直接使用Deno.serve基于现代异步 I/O 实现生产部署前用deno compile编译为独立可执行文件减少启动开销并简化分发。十六、在 autoskills 中启用并查看该技能deno-typescript技能会随 autoskills 的检测流程自动进入你的项目。实操路径如下触发检测在项目根目录运行npx autoskills要求 Node.js 22autoskills 扫描到deno.json/deno.jsonc/deno.lock即识别为 Deno 项目预览确认可先运行npx autoskills --dry-run输出中应包含Deno及deno-expert、deno-typescript等技能名对应仓库测试 tests/cli.test.ts 的断言行为一键安装确认后技能被安装到项目.agents/skills/deno-typescript/SKILL.md安装逻辑见 installer.ts若目标是 Claude Code 还会自动生成CLAUDE.md汇总说明查阅原文本文所有规范均可在仓库原文 packages/autoskills/skills-registry/deno-typescript/SKILL.md 中直接查阅其收录来源与校验信息见 skills-registry/index.json。此后你的 AI 编码助手在 Deno 项目中编写、评审代码时就会自动遵循本文所述的命名规范、权限最小化、内置工具链与错误处理模式让生成的代码更贴合 Deno 生态的最佳实践。赞分享【免费下载链接】autoskillsOne command. Your entire AI skill stack. Installed.项目地址https://gitcode.com/gh_mirrors/au/autoskills点击查看免费下载相关推荐10分钟掌握LabelImg零基础学会图像标注工具的高效使用技巧10分钟掌握LabelImg零基础学会图像标注工具的高效使用技巧 还在为AI模型训练寻找合适的图像标注工具而烦恼吗LabelImg作为一款开源的图像标注工具数据标注计算机视觉人工智能使用 autoskills 构建 Manifest V3 Chrome 扩展从架构规范到安全、性能与发布全指南使用 autoskills 构建 Manifest V3 Chrome 扩展从架构规范到安全、性能与发布全指南 导读 本文以 autoskills 技能注册表Conductor TypeScript 风格指南构建类型安全 TypeScript 代码的完整规范与实践Conductor TypeScript 风格指南构建类型安全 TypeScript 代码的完整规范与实践 导读 本文以本仓库 conductor 插件 htAI 插件AI 技能开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考