ワンクリックで
add-content-script
添加一个新的 Content Script,注入到过早客论坛页面中。包含脚本创建、Vue 应用挂载和在主入口注册的完整流程。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
添加一个新的 Content Script,注入到过早客论坛页面中。包含脚本创建、Vue 应用挂载和在主入口注册的完整流程。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
代码生成后执行自动化质量检查。运行 Prettier 格式化、ESLint 检查修复和 TypeScript 类型检查。
以持续追问的方式"拷问"用户的设计方案或计划,沿决策树逐一解决每个分支的依赖关系,直到达成共识。当用户想要压力测试方案、被"盘问"设计思路,或提到"拷问我"/"grill me"/"审查方案"/"盘问方案"/"帮我梳理"等表达时使用。
为项目端到端地添加一个完整的新功能。覆盖从需求分析到代码生成、测试验证的全部流程,涉及 Content Script、Vue 组件、选项配置、国际化等多个层面。
为过早客论坛页面添加新的 HTML 解析函数,从论坛 HTML 中提取结构化数据。遵循项目现有的正则解析模式。
为项目添加国际化翻译。使用 vue-i18n 管理中文和英文翻译,包含翻译 key 设计、文件更新和使用方式。
在扩展的选项页面中添加一个新的子页面。包含路由配置、Vue 页面创建和侧边栏导航集成的完整流程。
| name | add-content-script |
| description | 添加一个新的 Content Script,注入到过早客论坛页面中。包含脚本创建、Vue 应用挂载和在主入口注册的完整流程。 |
在执行本 Skill 前,先阅读以下知识库文件以获取必要的背景知识:
.codebuddy/knowledge/architecture.md - 理解 Content Script 注入机制和存储同步流程.codebuddy/knowledge/forum-domain.md - 了解论坛页面 DOM 结构和已有 CSS 选择器Content Script 是注入到 www.guozaoke.com 论坛页面的脚本,可以为论坛添加 UI 组件和交互功能。所有 Content Script 通过 src/scripts/index.ts 统一注册。
src/scripts/
├── index.ts # 主入口 - 注册所有脚本
├── block-keyword.ts # 关键字屏蔽
├── block-user.ts # 用户屏蔽
├── dblclick-to-top.ts # 双击回到顶部
├── float-user-info.ts # 悬浮用户信息
├── header.ts # 顶部导航增强
├── hide-gzk-info.ts # 隐藏论坛信息
├── hide-topic.ts # 隐藏主题
├── set-appearance.ts # 设置外观
├── topic.ts # 主题增强
└── upload-bili-img.ts # B站图床上传
在 src/scripts/ 中创建新文件,遵循命名规范(kebab-case):
// src/scripts/my-feature.ts
import { createScriptApp } from '@/utils';
import { SELECTOR_SOME_ELEMENT } from '@/constants/selector';
import MyFeatureComponent from '@/components/MyFeature.vue';
import type { Pinia } from 'pinia';
export const createMyFeatureApp = (pinia: Pinia) => {
const containerParentNode = document.querySelector(SELECTOR_SOME_ELEMENT);
if (!containerParentNode) {
return;
}
createScriptApp({
root: MyFeatureComponent,
pinia,
containerId: 'gzk-my-feature-app',
containerParentNode,
});
};
src/scripts/index.ts 中注册// 添加导入
import { createMyFeatureApp } from './my-feature';
// 在 setupApp 函数中添加条件调用
const setupApp = async () => {
const { options } = await getStorage();
// ... 已有代码
if (options[OptionsKey.MyFeature]?.checked) {
createMyFeatureApp(pinia);
}
};
在 src/components/ 中创建组件:
<script setup lang="ts">
import { ElementConfig } from '@/directives';
</script>
<template>
<ElementConfig>
<div class="my-feature">
<!-- 功能 UI -->
</div>
</ElementConfig>
</template>
<style lang="scss" scoped>
.my-feature {
// 样式(注意 scoped)
}
</style>
在 src/constants/selector.ts 中添加新的 DOM 选择器:
export const SELECTOR_MY_ELEMENT = '.some-css-class';
如果功能需要用户开关控制:
OptionsKey 枚举中添加新键defaultExtensionOptions 中添加默认值Options 类型中添加对应字段src/views/basic-setting/ 中添加设置 UIcreateScriptAppinterface ScriptAppOptions {
root: Component; // Vue 根组件
pinia: Pinia; // Pinia 实例
containerId: string; // 挂载容器 ID(格式: 'gzk-{name}-app')
containerParentNode: Element | null; // 父容器 DOM 节点
}
getStorage / setStorageimport { getStorage, setStorage } from '@/utils';
const { options } = await getStorage();
await setStorage({ options: newOptions });
位置: src/constants/selector.ts
export const SELECTOR_LOGIN_USER_LINK = '.navbar-right a[href^="/u/"]';
export const SELECTOR_TOP_NAVBAR = '.navbar-fixed-top';
export const SELECTOR_TOPIC_LINK = 'a[href^="/t/"]';
export const SELECTOR_USER_AVATAR = '.avatar';
export const SELECTOR_USER_LINK = 'a[href^="/u/"]';
export const SELECTOR_NODE_LINK = 'a[href^="/go/"], a[href^="/node/"]';
export const SELECTOR_MSG_UNREAD_INDICATOR = 'a[href="/notifications"]';
const enum 定义枚举import type 导入类型gzk-{name}-app 格式