diff --git a/src/modules/package-api.ts b/src/modules/package-api.ts
new file mode 100644
index 0000000..2e3bd8d
--- /dev/null
+++ b/src/modules/package-api.ts
@@ -0,0 +1,299 @@
+import { createQueryApi } from '@kevisual/query/api';
+const api = {
+ "cnb": {
+ /**
+ * 获取指定制品的详细信息
+ *
+ * @param data - Request parameters
+ * @param data.slug - {string} 资源路径, 如 my-org/my-registry
+ * @param data.type - {string} 制品类型
+ * @param data.name - {string} 制品名称
+ */
+ "get-package": {
+ "path": "cnb",
+ "key": "get-package",
+ "description": "获取制品详情, 参数 slug, type, name",
+ "metadata": {
+ "tags": [
+ "package"
+ ],
+ "args": {
+ "slug": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "资源路径, 如 my-org/my-registry"
+ },
+ "type": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品类型"
+ },
+ "name": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品名称"
+ }
+ },
+ "skill": "get-package",
+ "title": "获取制品详情",
+ "summary": "获取指定制品的详细信息",
+ "url": "/api/router",
+ "source": "query-proxy-api"
+ }
+ },
+ /**
+ * 获取制品标签的详细信息
+ *
+ * @param data - Request parameters
+ * @param data.slug - {string} 资源路径, 如 my-org/my-registry
+ * @param data.type - {string} 制品类型
+ * @param data.name - {string} 制品名称
+ * @param data.tag - {string} 标签名称
+ */
+ "get-package-tag": {
+ "path": "cnb",
+ "key": "get-package-tag",
+ "description": "获取制品标签详情, 参数 slug, type, name, tag",
+ "metadata": {
+ "tags": [
+ "package"
+ ],
+ "args": {
+ "slug": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "资源路径, 如 my-org/my-registry"
+ },
+ "type": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品类型"
+ },
+ "name": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品名称"
+ },
+ "tag": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "标签名称"
+ }
+ },
+ "skill": "get-package-tag",
+ "title": "获取制品标签详情",
+ "summary": "获取制品标签的详细信息",
+ "url": "/api/router",
+ "source": "query-proxy-api"
+ }
+ },
+ /**
+ * 查询制品列表
+ *
+ * @param data - Request parameters
+ * @param data.slug - {string} 资源路径, 如 my-org/my-registry
+ * @param data.type - {string} 制品类型: all, docker, helm, docker-model, maven, npm, ohpm, pypi, nuget, composer, conan, cargo
+ * @param data.ordering - {string} 排序类型: pull_count, last_push_at, name_ascend, name_descend
+ * @param data.name - {string} 关键字,搜索制品名称
+ * @param data.page - {number} 页码
+ * @param data.page_size - {number} 每页数量
+ */
+ "list-packages": {
+ "path": "cnb",
+ "key": "list-packages",
+ "description": "查询制品列表, 参数 slug, type",
+ "metadata": {
+ "tags": [
+ "package"
+ ],
+ "args": {
+ "slug": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "资源路径, 如 my-org/my-registry"
+ },
+ "type": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品类型: all, docker, helm, docker-model, maven, npm, ohpm, pypi, nuget, composer, conan, cargo"
+ },
+ "ordering": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "排序类型: pull_count, last_push_at, name_ascend, name_descend",
+ "optional": true
+ },
+ "name": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "关键字,搜索制品名称",
+ "optional": true
+ },
+ "page": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "number",
+ "description": "页码",
+ "optional": true
+ },
+ "page_size": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "number",
+ "description": "每页数量",
+ "optional": true
+ }
+ },
+ "skill": "list-packages",
+ "title": "查询制品列表",
+ "summary": "查询制品列表",
+ "url": "/api/router",
+ "source": "query-proxy-api"
+ }
+ },
+ /**
+ * 获取制品的标签列表
+ *
+ * @param data - Request parameters
+ * @param data.slug - {string} 资源路径, 如 my-org/my-registry
+ * @param data.type - {string} 制品类型
+ * @param data.name - {string} 制品名称
+ * @param data.page - {number} 页码
+ * @param data.page_size - {number} 每页数量
+ */
+ "list-package-tags": {
+ "path": "cnb",
+ "key": "list-package-tags",
+ "description": "获取制品标签列表, 参数 slug, type, name",
+ "metadata": {
+ "tags": [
+ "package"
+ ],
+ "args": {
+ "slug": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "资源路径, 如 my-org/my-registry"
+ },
+ "type": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品类型"
+ },
+ "name": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品名称"
+ },
+ "page": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "number",
+ "description": "页码",
+ "optional": true
+ },
+ "page_size": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "number",
+ "description": "每页数量",
+ "optional": true
+ }
+ },
+ "skill": "list-package-tags",
+ "title": "获取制品标签列表",
+ "summary": "获取制品的标签列表",
+ "url": "/api/router",
+ "source": "query-proxy-api"
+ }
+ },
+ /**
+ * 删除指定的制品
+ *
+ * @param data - Request parameters
+ * @param data.slug - {string} 资源路径, 如 my-org/my-registry
+ * @param data.type - {string} 制品类型
+ * @param data.name - {string} 制品名称
+ */
+ "delete-package": {
+ "path": "cnb",
+ "key": "delete-package",
+ "description": "删除制品, 参数 slug, type, name",
+ "metadata": {
+ "tags": [
+ "package"
+ ],
+ "args": {
+ "slug": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "资源路径, 如 my-org/my-registry"
+ },
+ "type": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品类型"
+ },
+ "name": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品名称"
+ }
+ },
+ "skill": "delete-package",
+ "title": "删除制品",
+ "summary": "删除指定的制品",
+ "url": "/api/router",
+ "source": "query-proxy-api"
+ }
+ },
+ /**
+ * 删除制品的指定标签
+ *
+ * @param data - Request parameters
+ * @param data.slug - {string} 资源路径, 如 my-org/my-registry
+ * @param data.type - {string} 制品类型
+ * @param data.name - {string} 制品名称
+ * @param data.tag - {string} 标签名称
+ */
+ "delete-package-tag": {
+ "path": "cnb",
+ "key": "delete-package-tag",
+ "description": "删除制品标签, 参数 slug, type, name, tag",
+ "metadata": {
+ "tags": [
+ "package"
+ ],
+ "args": {
+ "slug": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "资源路径, 如 my-org/my-registry"
+ },
+ "type": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品类型"
+ },
+ "name": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "制品名称"
+ },
+ "tag": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "string",
+ "description": "标签名称"
+ }
+ },
+ "skill": "delete-package-tag",
+ "title": "删除制品标签",
+ "summary": "删除制品的指定标签",
+ "url": "/api/router",
+ "source": "query-proxy-api"
+ }
+ }
+ }
+} as const;
+const queryApi = createQueryApi({ api });
+
+export { queryApi };
+
+// 使用例子,方法为对应的方法,data 为对应的 args 的参数的定义数据
+// queryApi['user-app'].delete(data)
diff --git a/src/pages/cnb-packages/detail/page.tsx b/src/pages/cnb-packages/detail/page.tsx
new file mode 100644
index 0000000..feb020b
--- /dev/null
+++ b/src/pages/cnb-packages/detail/page.tsx
@@ -0,0 +1,235 @@
+import { useSearch } from "@tanstack/react-router";
+import { MarkItem, usePackageStore } from "../store";
+import { PackageItem } from "../store/package-type";
+import { useShallow } from "zustand/shallow";
+import { useEffect, useState } from "react";
+import dayjs from "dayjs";
+import { Button } from "@/components/ui/button";
+import { Badge } from "@/components/ui/badge";
+import {
+ Card,
+ CardContent,
+ CardDescription,
+ CardHeader,
+ CardTitle,
+ CardAction,
+} from "@/components/ui/card";
+import { SidebarLayout } from "@/pages/sidebar/components";
+import { ArrowLeftIcon, Copy, MoreVertical, Info, ExternalLink } from "lucide-react";
+import { toast } from "sonner";
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from "@/components/ui/dropdown-menu";
+import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
+
+export const App = () => {
+ const searchParams = useSearch({ strict: false }) as { slug?: string; id?: string };
+ const { slug, id } = searchParams;
+
+ const packageStore = usePackageStore(useShallow((state) => ({
+ packagesList: state.packagesList,
+ packagesListLoading: state.packagesListLoading,
+ getPackagesList: state.getPackagesList,
+ getItem: state.getItem,
+ })));
+
+ const [detailItem, setDetailItem] = useState
+ ID: {detailItem.id}
+ {item.description}
+ 拉取次数: {item.pull_count}
+
+ 最新推送: {item.last_pusher?.nickname || '-'}
+
+ 推送时间: {item.last_pusher?.push_at ? dayjs(item.last_pusher.push_at).format('YYYY-MM-DD HH:mm:ss') : '-'}
+ {item.summary} {item.description}
创建时间: {item.createdAt ? dayjs(item.createdAt).format('YYYY-MM-DD HH:mm:ss') : '-'}
制品详情
+ 制品列表
+ {packageStore.packagesListLoading ? (
+