refactor: rename dev-app to app-dev

Both TickShield app skills now uniformly follow the app-<action>
naming convention (app-dev, app-publish) — the grandfathered-name
exception is removed from AGENTS.md, README and skill-forge
This commit is contained in:
sunjunzhao committed 2026-10-19 16:58:03 +08:00
1 parent eef31c17ba
commit a10d01a44b
23 files changed
+13 -13

No files matched your search

+2 -2
View File
@@ -4,7 +4,7 @@
针对 TickShield app 的 skill 以 `app-<action>` 命名、不带 `tickshield-` 平台前缀(平台归属由 SKILL.md 的 description 表达): 针对 TickShield app 的 skill 以 `app-<action>` 命名、不带 `tickshield-` 平台前缀(平台归属由 SKILL.md 的 description 表达):
- `dev-app` — 按平台契约开发/审查/手工发布生态应用(既有名称,保留不改) - `app-dev` — 按平台契约开发/审查/手工发布生态应用
- `app-publish` — 改造/新建 Gitea Actions 工作流,把部署 job 改为发布上架到应用市场 - `app-publish` — 改造/新建 Gitea Actions 工作流,把部署 job 改为发布上架到应用市场
新增同族 skill 一律 `app-<action>`(如 app-review、app-test),并在 README.md 的 Skills 列表登记。 新增同族 skill 一律 `app-<action>`(如 app-review、app-test),并在 README.md 的 Skills 列表登记。
@@ -13,5 +13,5 @@
本仓库是分发源(用户经 `npx skills add gitea@livebook:images/skills.git` 安装,默认项目级)。 本仓库是分发源(用户经 `npx skills add gitea@livebook:images/skills.git` 安装,默认项目级)。
- `dev-app`、`app-publish`:**只装项目级**(目标项目的 `.agents/skills/`),不在 `~/.agents/skills/` 维护全局副本 - `app-dev`、`app-publish`:**只装项目级**(目标项目的 `.agents/skills/`),不在 `~/.agents/skills/` 维护全局副本
- 其余 skill(gitea-actions、push-and-report、runtime-image、skill-forge 等):本机 `~/.agents/skills/<name>/` 有用户级副本,改动后两处同步 - 其余 skill(gitea-actions、push-and-report、runtime-image、skill-forge 等):本机 `~/.agents/skills/<name>/` 有用户级副本,改动后两处同步
+2 -2
View File
@@ -46,7 +46,7 @@ npx skills remove runtime-image -g
| [skill-forge](skills/skill-forge/SKILL.md) | 交互式创建新 Skill 的流水线,一问一答采集触发词/流程/红线,产出可直接使用的 SKILL.md | | [skill-forge](skills/skill-forge/SKILL.md) | 交互式创建新 Skill 的流水线,一问一答采集触发词/流程/红线,产出可直接使用的 SKILL.md |
| [push-and-report](skills/push-and-report/SKILL.md) | 标准收尾流程:盘点 git 变更 → 英文 conventional commit → 推送远程 → SPMS 日报 | | [push-and-report](skills/push-and-report/SKILL.md) | 标准收尾流程:盘点 git 变更 → 英文 conventional commit → 推送远程 → SPMS 日报 |
| [gitea-actions](skills/gitea-actions/SKILL.md) | 按统一规范给项目生成/评审优化 Gitea Actions 构建部署工作流(buildx 推 Gitea Packages → 本机重建容器 → 清理旧版本) | | [gitea-actions](skills/gitea-actions/SKILL.md) | 按统一规范给项目生成/评审优化 Gitea Actions 构建部署工作流(buildx 推 Gitea Packages → 本机重建容器 → 清理旧版本) |
| [dev-app](skills/dev-app/SKILL.md) | 按 TickShield 平台契约在独立仓库开发/审查/发布生态应用(listingKey 四位一体、四道闸、tenant_id 租户隔离、release-cli 上架部署),含模板组与静态检查脚本 | | [app-dev](skills/app-dev/SKILL.md) | 按 TickShield 平台契约在独立仓库开发/审查/发布生态应用(listingKey 四位一体、四道闸、tenant_id 租户隔离、release-cli 上架部署),含模板组与静态检查脚本 |
| [app-publish](skills/app-publish/SKILL.md) | 改造/新建 Gitea Actions 工作流,把部署 job 改为 aigrego-release 发布上架到 TickShield 应用市场(--store 自动上架 + --wait 审核门禁),含工作流模板与自检脚本 | | [app-publish](skills/app-publish/SKILL.md) | 改造/新建 Gitea Actions 工作流,把部署 job 改为 aigrego-release 发布上架到 TickShield 应用市场(--store 自动上架 + --wait 审核门禁),含工作流模板与自检脚本 |
## 目录结构 ## 目录结构
@@ -63,7 +63,7 @@ skills/
└── ... └── ...
``` ```
命名规范:针对 TickShield app 的 skill 以 `app-<action>` 命名(如 `app-publish`),不带平台前缀(平台归属写进 description);`dev-app` 为既有保留名。新增同族 skill 一律 `app-<action>`。 命名规范:针对 TickShield app 的 skill 以 `app-<action>` 命名(如 `app-dev`、`app-publish`),不带平台前缀(平台归属写进 description)。新增同族 skill 一律 `app-<action>`。
## License ## License
@@ -1,9 +1,9 @@
--- ---
name: dev-app name: app-dev
description: 在独立仓库按 TickShield(刻盾云)平台契约开发、审查、发布生态应用(micro/service):listingKey 四位一体、app.manifest.json、tickshield-node-runtime 基础镜像、@aigrego/guard 四道闸与 tenant_id 租户隔离、micro 前端 portal-sdk 宿主桥、release-cli 发布与商店上架部署。凡用户要求「开发一个平台应用 / 新建 app / 写个 micro 应用 / 做个像 secret-manager / demo-app 那样的应用 / 在门户里加个自己的应用 / 接入 TickShield / 上架应用到商店 / 审查这个 app 能不能部署到平台 / 帮我看看接入还缺什么」,或带着 注册不上去 / 401 missing app credentials / 心跳 404 / host must equal listingKey / 四道闸 403 / 跨租户数据串了 / image registry not registered / invalid manifest skipped / 应用装上了但 /svc 不通 / PROD 白屏 CSP 报错 等症状,或提到 listingKey / app.manifest.json / 四道闸 / TDT / tenant_id / portal-sdk / release-cli / tickshield-node-runtime 时,务必使用本 skill——即使用户没说「应用接入」四个字。Use whenever the user develops, scaffolds, audits, onboards, publishes or deploys a TickShield platform app (micro or service) from an independent repository. 边界:非平台场景的通用 Dockerfile 选型评审用 runtime-image;通用 Gitea Actions 工作流规范用 gitea-actions;CI 工作流的发布 job 改造/新建发布工作流用 app-publish;git 提交推送与日报用 push-and-report;平台基座本身(portal/gateway/packages/* 控制面)的开发不归本 skill。 description: 在独立仓库按 TickShield(刻盾云)平台契约开发、审查、发布生态应用(micro/service):listingKey 四位一体、app.manifest.json、tickshield-node-runtime 基础镜像、@aigrego/guard 四道闸与 tenant_id 租户隔离、micro 前端 portal-sdk 宿主桥、release-cli 发布与商店上架部署。凡用户要求「开发一个平台应用 / 新建 app / 写个 micro 应用 / 做个像 secret-manager / demo-app 那样的应用 / 在门户里加个自己的应用 / 接入 TickShield / 上架应用到商店 / 审查这个 app 能不能部署到平台 / 帮我看看接入还缺什么」,或带着 注册不上去 / 401 missing app credentials / 心跳 404 / host must equal listingKey / 四道闸 403 / 跨租户数据串了 / image registry not registered / invalid manifest skipped / 应用装上了但 /svc 不通 / PROD 白屏 CSP 报错 等症状,或提到 listingKey / app.manifest.json / 四道闸 / TDT / tenant_id / portal-sdk / release-cli / tickshield-node-runtime 时,务必使用本 skill——即使用户没说「应用接入」四个字。Use whenever the user develops, scaffolds, audits, onboards, publishes or deploys a TickShield platform app (micro or service) from an independent repository. 边界:非平台场景的通用 Dockerfile 选型评审用 runtime-image;通用 Gitea Actions 工作流规范用 gitea-actions;CI 工作流的发布 job 改造/新建发布工作流用 app-publish;git 提交推送与日报用 push-and-report;平台基座本身(portal/gateway/packages/* 控制面)的开发不归本 skill。
--- ---
# dev-app — TickShield 生态应用开发规范(独立仓库 → 可直接部署上架) # app-dev — TickShield 生态应用开发规范(独立仓库 → 可直接部署上架)
TickShield 生态应用的交付物只有两样:**镜像 + `app.manifest.json`**。注册/心跳/优雅下线/健康检查由基础镜像 `tickshield-node-runtime:base` 的 `runtime-entry.js` 全包;应用代码只需一个导出 `{handler, dbCheck?}` 的 ESM 入口,全量 SQL 走 `@aigrego/guard` 租户数据源,路由挂四道闸。本 skill 把这套契约锻成可执行的流程,两种工作模式: TickShield 生态应用的交付物只有两样:**镜像 + `app.manifest.json`**。注册/心跳/优雅下线/健康检查由基础镜像 `tickshield-node-runtime:base` 的 `runtime-entry.js` 全包;应用代码只需一个导出 `{handler, dbCheck?}` 的 ESM 入口,全量 SQL 走 `@aigrego/guard` 租户数据源,路由挂四道闸。本 skill 把这套契约锻成可执行的流程,两种工作模式:
File renamed without changes.
@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# dev-app 静态契约检查(零依赖:bash + grep + sed;manifest 语义解析优先 node,退化 python3)。 # app-dev 静态契约检查(零依赖:bash + grep + sed;manifest 语义解析优先 node,退化 python3)。
# 用法: check-app.sh [仓库根] 退出码 0=无 die(可有 warn),1=有 die 级违规。 # 用法: check-app.sh [仓库根] 退出码 0=无 die(可有 warn),1=有 die 级违规。
# 只查静态契约,不替代真环境联调(verify-onboarding 六项出口门)。 # 只查静态契约,不替代真环境联调(verify-onboarding 六项出口门)。
set -u set -u
+5 -5
View File
@@ -1,6 +1,6 @@
--- ---
name: app-publish name: app-publish
description: 改造目标项目 Gitea Actions CI/CD 工作流的应用部署 job,按 TickShield(刻盾云)平台契约改用 aigrego-release(release-cli)发布上架:submit app.manifest.json + 记录镜像/上传 dist 产物 + --store 自动上架 + --wait 等治理审核,推 v 开头 tag 即发布到应用市场;项目没有工作流时新建完整发布工作流。凡用户要求「把部署 job 改成发布到应用市场 / 这个项目上架到 TickShield 商店 / CI 里自动发布应用 / 推 tag 自动上架 / 给 workflow 加应用市场发布 / 把这个 app 挂到门户商店 / 上线到刻盾云市场」,或带着 流水线绿了但商店没上架没生效 / 发布了但商店搜不到我的应用 / 403 auto_publish is off for this app / 401 凭证无效 / 403 listingKey mismatch / 400 index.html missing at archive root / 409 submit a manifest first 等症状,或提到 aigrego-release / release-cli / publish --store / --wait / AIGREGO_PORTAL_URL / APP_KEY / APP_SECRET / auto_publish / 应用市场发布模板 时,务必使用本 skill——即使用户没说「应用市场」四个字。Use whenever the user wants to convert or add a Gitea Actions deploy job that publishes a TickShield app to the platform marketplace via aigrego-release. 边界:应用开发/审查/手工发布指引用 dev-app;通用构建部署工作流规范(本机重建容器部署)用 gitea-actions;Dockerfile 选型评审用 runtime-image;git 提交推送日报用 push-and-report。 description: 改造目标项目 Gitea Actions CI/CD 工作流的应用部署 job,按 TickShield(刻盾云)平台契约改用 aigrego-release(release-cli)发布上架:submit app.manifest.json + 记录镜像/上传 dist 产物 + --store 自动上架 + --wait 等治理审核,推 v 开头 tag 即发布到应用市场;项目没有工作流时新建完整发布工作流。凡用户要求「把部署 job 改成发布到应用市场 / 这个项目上架到 TickShield 商店 / CI 里自动发布应用 / 推 tag 自动上架 / 给 workflow 加应用市场发布 / 把这个 app 挂到门户商店 / 上线到刻盾云市场」,或带着 流水线绿了但商店没上架没生效 / 发布了但商店搜不到我的应用 / 403 auto_publish is off for this app / 401 凭证无效 / 403 listingKey mismatch / 400 index.html missing at archive root / 409 submit a manifest first 等症状,或提到 aigrego-release / release-cli / publish --store / --wait / AIGREGO_PORTAL_URL / APP_KEY / APP_SECRET / auto_publish / 应用市场发布模板 时,务必使用本 skill——即使用户没说「应用市场」四个字。Use whenever the user wants to convert or add a Gitea Actions deploy job that publishes a TickShield app to the platform marketplace via aigrego-release. 边界:应用开发/审查/手工发布指引用 app-dev;通用构建部署工作流规范(本机重建容器部署)用 gitea-actions;Dockerfile 选型评审用 runtime-image;git 提交推送日报用 push-and-report。
--- ---
# app-publish — 把 CI 部署环节改造为发布上架到 TickShield 应用市场 # app-publish — 把 CI 部署环节改造为发布上架到 TickShield 应用市场
@@ -27,7 +27,7 @@ description: 改造目标项目 Gitea Actions CI/CD 工作流的应用部署 job
| 要什么 | 从哪来 | 放哪 | | 要什么 | 从哪来 | 放哪 |
|---|---|---| |---|---|---|
| `app.manifest.json` | 仓库根(无 → die,先走 `dev-app` 完成应用接入) | 仓库根,listingKey/版本的单一事实源 | | `app.manifest.json` | 仓库根(无 → die,先走 `app-dev` 完成应用接入) | 仓库根,listingKey/版本的单一事实源 |
| `Dockerfile`(service/micro 型) | 仓库根(无 → die,先走 `runtime-image`;link/native 型不需要镜像段) | 仓库根 | | `Dockerfile`(service/micro 型) | 仓库根(无 → die,先走 `runtime-image`;link/native 型不需要镜像段) | 仓库根 |
| 平台地址 | 用户告知(workflow 默认 `http://gateway:8080`) | Gitea Variable `TICKSHIELD_PORTAL_URL`,不写死 | | 平台地址 | 用户告知(workflow 默认 `http://gateway:8080`) | Gitea Variable `TICKSHIELD_PORTAL_URL`,不写死 |
| 应用凭证 | **平台基座「接入应用」功能获取**(APP_KEY == listingKey、APP_SECRET) | 人配到 Gitea 仓库 Secrets;绝不进对话/文件 | | 应用凭证 | **平台基座「接入应用」功能获取**(APP_KEY == listingKey、APP_SECRET) | 人配到 Gitea 仓库 Secrets;绝不进对话/文件 |
@@ -41,7 +41,7 @@ description: 改造目标项目 Gitea Actions CI/CD 工作流的应用部署 job
| 探测项 | 怎么探 | 判定/用途 | | 探测项 | 怎么探 | 判定/用途 |
|---|---|---| |---|---|---|
| 已有 workflow(**最先做,决定模式**) | glob `.gitea/workflows/*.yml`、`.yaml` | 有 → 改造模式;无 → 新建模式;已有发布工作流 → 按硬约束逐条评审报「已符合/差距」 | | 已有 workflow(**最先做,决定模式**) | glob `.gitea/workflows/*.yml`、`.yaml` | 有 → 改造模式;无 → 新建模式;已有发布工作流 → 按硬约束逐条评审报「已符合/差距」 |
| `app.manifest.json` | 读仓库根 | 无 → die 指路 `dev-app`;含 `deployDescriptor` → die(平台管理员专属字段,提交必 403) | | `app.manifest.json` | 读仓库根 | 无 → die 指路 `app-dev`;含 `deployDescriptor` → die(平台管理员专属字段,提交必 403) |
| type / listingKey / version | 从 manifest 读 | type 分流:service → `--image`;micro → `--image` + `--dist`;link/native → 只交 manifest。listingKey 过正则 `^[a-z0-9][a-z0-9-]{0,62}$`,version 必须 semver | | type / listingKey / version | 从 manifest 读 | type 分流:service → `--image`;micro → `--image` + `--dist`;link/native → 只交 manifest。listingKey 过正则 `^[a-z0-9][a-z0-9-]{0,62}$`,version 必须 semver |
| Dockerfile | glob `Dockerfile*` | service/micro 无 → die 指路 `runtime-image` | | Dockerfile | glob `Dockerfile*` | service/micro 无 → die 指路 `runtime-image` |
| 现有构建段镜像 ref(改造模式) | 读现有 workflow 的 build/push 步骤 | 发布 job 用同一表达式重算镜像 ref,保证与构建产物一致 | | 现有构建段镜像 ref(改造模式) | 读现有 workflow 的 build/push 步骤 | 发布 job 用同一表达式重算镜像 ref,保证与构建产物一致 |
@@ -139,7 +139,7 @@ fail-fast 分级:无 manifest / 无 Dockerfile / manifest 含 deployDescriptor
| 401 凭证无效 | 凭证未签发/secrets 填错 | 平台基座「接入应用」获取凭证;核对 APP_KEY == listingKey | | 401 凭证无效 | 凭证未签发/secrets 填错 | 平台基座「接入应用」获取凭证;核对 APP_KEY == listingKey |
| 403 `listingKey mismatch` | --key 与凭证 listingKey 不符 | key 只从 manifest 取,不另配(约束⑥) | | 403 `listingKey mismatch` | --key 与凭证 listingKey 不符 | key 只从 manifest 取,不另配(约束⑥) |
| 403 `deployDescriptor is platform-admin only` | manifest 携带 deployDescriptor | 从 manifest 删除该字段(自检脚本 die 拦) | | 403 `deployDescriptor is platform-admin only` | manifest 携带 deployDescriptor | 从 manifest 删除该字段(自检脚本 die 拦) |
| 400 manifest 校验失败(版本非 semver、scope 格式等) | 不符 ValidateManifest | 对照错误文案逐条修;可先跑 `dev-app` 的 check-app.sh 预检 | | 400 manifest 校验失败(版本非 semver、scope 格式等) | 不符 ValidateManifest | 对照错误文案逐条修;可先跑 `app-dev` 的 check-app.sh 预检 |
| 400 `index.html missing at archive root` | `--dist` 套了目录,包根无 index.html | 传构建产物目录本身(约束⑤) | | 400 `index.html missing at archive root` | `--dist` 套了目录,包根无 index.html | 传构建产物目录本身(约束⑤) |
| 413 | 产物包超 64MB | 精简产物/排查打包内容 | | 413 | 产物包超 64MB | 精简产物/排查打包内容 |
| 409 `submit a manifest first` | 无生效版本就单独 `--image` | manifest 与 image 同一条 publish 命令(约束④) | | 409 `submit a manifest first` | 无生效版本就单独 `--image` | manifest 与 image 同一条 publish 命令(约束④) |
@@ -166,7 +166,7 @@ die 消息统一三段式:是什么 + 为什么(后果) + 怎么办。
## 边界:这些不归本 skill 管 ## 边界:这些不归本 skill 管
- 应用代码开发/审查/手工发布指引(归 `dev-app`;本 skill 只接管 CI 里的发布环节) - 应用代码开发/审查/手工发布指引(归 `app-dev`;本 skill 只接管 CI 里的发布环节)
- 通用 Gitea Actions 构建部署规范、基础镜像内网落盘(归 `gitea-actions`;新建模式的构建段只是最小可用) - 通用 Gitea Actions 构建部署规范、基础镜像内网落盘(归 `gitea-actions`;新建模式的构建段只是最小可用)
- Dockerfile 选型/评审(归 `runtime-image`) - Dockerfile 选型/评审(归 `runtime-image`)
- git 提交、推送、日报(归 `push-and-report`) - git 提交、推送、日报(归 `push-and-report`)
+1 -1
View File
@@ -52,7 +52,7 @@ description: 交互式创建新 Skill 的流水线:通过一问一答逐步采
- 工具/名词(`docker push`、`xrel_`、某 MCP 工具名) - 工具/名词(`docker push`、`xrel_`、某 MCP 工具名)
3. **什么事不归它管?** → 边界划界 + 路由到哪个现有 skill(与现有 skill 名单逐个对一遍,防重叠) 3. **什么事不归它管?** → 边界划界 + 路由到哪个现有 skill(与现有 skill 名单逐个对一遍,防重叠)
产出:kebab-case 名字(动词或领域词,如 `image-push`、`release-notes`)——**针对 TickShield app 的 skill 一律 `app-<action>` 命名**(如 `app-publish`;`dev-app` 是既有保留名,不照此改);description 按固定配方拼装: 产出:kebab-case 名字(动词或领域词,如 `image-push`、`release-notes`)——**针对 TickShield app 的 skill 一律 `app-<action>` 命名**(如 `app-dev`、`app-publish`);description 按固定配方拼装:
``` ```
中文长描述(一句话用途 + 触发原话枚举 + 「务必使用本 skill——即使用户没说『X』两个字」) 中文长描述(一句话用途 + 触发原话枚举 + 「务必使用本 skill——即使用户没说『X』两个字」)