AI 开发必用的4个skills组合,用来流畅掌控AI开发流程 ,灵活控制AI(opencode skills)

AI 开发必用的4个skills组合,用来流畅掌控AI开发流程 ,灵活控制AI(opencode skills)

skills 一种技能增强器。

skills 可以理解为升级版的提示词,它的文件记录了某个skill(技能)的元信息,就是描述这个skills的名称等信息,

另外它的文件中还记录了skills的技能实现步骤。

以下4个skills在AI项目开发中,我认为必不可缺一。

这4个skills的引入,可更为方便我们去介入AI,控制AI,给AI制定边界。

我会用一个音乐机器人项目开发来介绍这4个skills,如何介入AI开发流程,如何行云流水的控制AI。

指令式 控制AI 开发流程的主控调度器:有4个SIKLLS

在我的项目中.opencode目录中存在4个skills,

4个skills技能结合和.opencode目录同级的AGNETS.md文档,AGNETS.md是主控配置文件,

是AI 开发流程的主控调度器,负责协调三个专业技能包(毒蛇产品经理、UI设计师、全栈开发工程师、ui-ux-pro-max)

ui-ux-pro-max技能包,我120%的推荐,减少了不少UI配色的塑料感,可在文末看我此次,用技能包开发的UI界面,做一个效果对比。

skills技能指令:

我已经打包好了,想用这4个skills 的朋友,后台留言发送skills,我可分享。

dev-builder (全栈开发工程师)

/dev /run

ui-ux-pro-max (UI/UX设计智能)提供UI/UX设计指南和最佳实践,50种UI风格指南,21种配色方案…

/dev

ui-prompt-generator (UI提示词设计师)
根据产品文档生成原型图提示词,选择合适的视觉风格确定配色方案,生成UI-Prompts.md文件

/ui

product-spec-builder (毒蛇产品经理)生成Product-Spec.md和变更记录, 毒舌产品经理,不接受模糊回答,直接指出问题

/prd

4个Skills的作用说明:

  1. product-spec-builder (毒蛇产品经理)需求收集和产品文档编写,询问用户核心想法和功能需求,追问功能细节(输入、输出、业务规则),生成Product-Spec.md和变更记录, "毒舌"产品经理,不接受模糊回答,直接指出问题。
  2. ui-prompt-generator (UI提示词设计师)根据产品文档生成原型图提示词,理解产品需求并提炼核心功能,选择合适的视觉风格确定配色方案,为每个核心功能生成提示词(多个版本)生成UI-Prompts.md文件。
  3. ui-ux-pro-max (UI/UX设计智能)提供UI/UX设计指南和最佳实践,50种UI风格指南(玻璃态、极简、暗黑模式等),21种配色方案,50种字体配对,20种图表类型推荐,9种技术栈最佳实践(React、Next.js、Vue、Svelte等)。
  4. dev-builder (全栈开发工程师)
    根据产品需求文档实现功能代码,选择合适的技术栈(React/Vue/Next.js等)搭建项目结构和开发环境,实现核心功能代码确保代码质量和可维护性,集成AI功能(如OpenAI API)。
01 安装opencode

opencode mac/win版安装指令:

curl -fsSL https://opencode.ai/install |bashnpm i -g opencode-ai 
02 选择项目开发AI模型

免费的模型有:GLM-4.7、Grok Code,我本次使用的GLM-4.7模型。ctrl + p 即可选择模型。


03 开始项目 (音乐机器人项目开发)
04 毒蛇产品经理 (product-spec-builder)
/prd 毒蛇产品经理 开始明确产品开发需求,产品经理会渐进式的追问你的开发需求,一些列的追问。

我的开发需求:

我想做一个音乐视觉效果:根据音频的输入和音频中歌词的演唱,达到一个动画人物在自动演唱(有人物口型和表情、还有人物的一些演唱基本肢体动作)。API配置 - 视觉动作分析使用qwen3-vl-plus,音频歌词识别gemini_2_5_pro 。
05 Product-Spec.md已生成变更记录
产品需求文档明确后,就会记录一条开发进度。
06 UI提示词生成 (ui-prompt-generator)
skills UI原型图提示词生成
07 UI/UX设计智能 (ui-ux-pro-max)
UI-Prompts.md 借助文档中的提示词UI原型图要求,并且使用skills中的ui-ux-pro-max开发应用 /dev
08 代码开发实现 (dev-builder)
音乐机器人有音频歌词解析,歌词同步,就要接入一个音频分析模型,我这里接入的gemini2.5,

音乐机器人视觉效果接入的qwen3模型
09 项目完成
可以看看效果,比起平时我们前端开发出来的UI效果,是不是惊艳多了,配色、图形都没有AI的那种塑料感。
写在最后

skills我估计原本是在IDE编辑器中类似一个插件出现,只不过skills它是以文件的形式来作为一个插件,然后这个插件可以对接claude、opencode这些AI平台。

skills(毒蛇产品经理、UI提示词设计师、UI/UX设计智能、代码开发实现)优化项目开发流程,能显著提升效率和质量。

各技能模块化分工,减少沟通成本,确保需求从产品到实现的无缝衔接。自动化生成UI提示和设计,降低错误率;专业技能集成,保证产品符合最佳实践。并行处理任务(如提示生成与设计),加快开发周期;智能工具减少手动工作量。结合UI/UX智能和代码实现,推动创意落地,提升用户体验和产品竞争力。

skills 想用这4个skills 的朋友,后台留言发送skills,可分享。

Read more

前端实战:手把手教你实现浏览器通知功能

前端实战:手把手教你实现浏览器通知功能

前端入门:浏览器通知功能从0到1实现指南 作为前端学习者,你可能见过这样的场景:打开网页版聊天工具,就算把浏览器最小化,桌面也会弹出“新消息”提醒;或者某些网站的活动通知,会直接显示在电脑/手机桌面上。这种功能就是「浏览器桌面通知」,今天我们就从零开始,搞懂它、学会用它。 一、先搞懂3个基础问题 1. 什么是浏览器桌面通知? 简单说,就是网页能在浏览器窗口外面(比如电脑桌面、手机屏幕)给你发提醒。哪怕浏览器最小化、甚至页面切到后台,只要权限允许,都能收到通知,不用一直盯着网页。 2. 什么时候会用到它? 常见场景很贴近日常: * 网页版微信/QQ的新消息提醒; * 工作系统的审批提醒、任务到期通知; * 电商网站的订单状态更新(比如“你的快递已发货”); * 新闻/小说网站的订阅内容更新提醒。 3. 用起来难吗?有什么限制? 不难!核心就2步:先让用户同意开启通知(申请权限)

vue-router(vue 路由)基本使用指南(二)

vue-router(vue 路由)基本使用指南(二)

文章目录 * 深入使用 * 导航守卫 * 重定向与别名 * history 配置:指定历史模式 * 路由元信息(meta) * 拓展 * 状态管理(Pinia / Vuex) * Pinia / Vuex 介绍 * Vuex vs Pinia * Pinia 基本使用 * Pinia 使用 Cookies 存储 深入使用 导航守卫 导航守卫用于在路由跳转前、跳转后或解析过程中,添加自定义的逻辑处理,例如权限验证。 * to 和 from 是即将进入的目标路由和当前导航正要离开的路由 * next 是一个函数,该函数用于控制路由的跳转。 * next():继续执行路由。 * next(false):中断当前路由,如果浏览器的 URL 改变了,那么 URL 会回到 from

前端图片压缩方案学习

文章目录 * 一、前言 * 二、主流开箱即用的前端图片压缩方案 * 1. TinyPNG/TinyJPG API * 获取 API Key * 前端 API 调用方法 * 请求格式 * 示例代码(JavaScript) * 使用 Fetch API * 使用 Axios * 注意事项 * 错误处理 * 2. Compressor.js * 基本使用方法 * 核心 API * 示例代码 * 常用配置选项 * 进阶用法 * 注意事项 * 3. ImageMagick(通过wasm移植) * ImageMagick 前端 API 使用方法 * 使用 WASM 版本(MagickWASM) * 使用 JavaScript 封装库 * 浏览器直接加载

前端趋势:别被时代抛弃

前端趋势:别被时代抛弃 毒舌时刻 这代码写得跟博物馆似的,都是过时的技术。 各位前端同行,咱们今天聊聊前端趋势。别告诉我你还在使用过时的技术,那感觉就像在 5G 时代还在用 2G 网络——能用,但慢得要命。 为什么你需要关注前端趋势 最近看到一个项目,还在使用 React 16,不知道 React 18 的并发模式。我就想问:你是在做开发还是在做考古? 反面教材 // 反面教材:使用过时技术 // App.jsx import React, { useState, useEffect } from 'react'; function App() { const [data, setData] = useState([]); const [loading, setLoading] = useState(true)