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:
1 parent
eef31c17ba
commit
a10d01a44b
23 files changed
+13
-13
No files matched your search
@@ -4,7 +4,7 @@
|
||||
|
||||
针对 TickShield app 的 skill 以 `app-<action>` 命名、不带 `tickshield-` 平台前缀(平台归属由 SKILL.md 的 description 表达):
|
||||
|
||||
- `dev-app` — 按平台契约开发/审查/手工发布生态应用(既有名称,保留不改)
|
||||
- `app-dev` — 按平台契约开发/审查/手工发布生态应用
|
||||
- `app-publish` — 改造/新建 Gitea Actions 工作流,把部署 job 改为发布上架到应用市场
|
||||
|
||||
新增同族 skill 一律 `app-<action>`(如 app-review、app-test),并在 README.md 的 Skills 列表登记。
|
||||
@@ -13,5 +13,5 @@
|
||||
|
||||
本仓库是分发源(用户经 `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>/` 有用户级副本,改动后两处同步
|
||||
@@ -46,7 +46,7 @@ npx skills remove runtime-image -g
|
||||
| [skill-forge](skills/skill-forge/SKILL.md) | 交互式创建新 Skill 的流水线,一问一答采集触发词/流程/红线,产出可直接使用的 SKILL.md |
|
||||
| [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 → 本机重建容器 → 清理旧版本) |
|
||||
| [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 审核门禁),含工作流模板与自检脚本 |
|
||||
|
||||
## 目录结构
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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。
|
||||
---
|
||||
|
||||
# dev-app — TickShield 生态应用开发规范(独立仓库 → 可直接部署上架)
|
||||
# app-dev — TickShield 生态应用开发规范(独立仓库 → 可直接部署上架)
|
||||
|
||||
TickShield 生态应用的交付物只有两样:**镜像 + `app.manifest.json`**。注册/心跳/优雅下线/健康检查由基础镜像 `tickshield-node-runtime:base` 的 `runtime-entry.js` 全包;应用代码只需一个导出 `{handler, dbCheck?}` 的 ESM 入口,全量 SQL 走 `@aigrego/guard` 租户数据源,路由挂四道闸。本 skill 把这套契约锻成可执行的流程,两种工作模式:
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,5 +1,5 @@
|
||||
#!/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 级违规。
|
||||
# 只查静态契约,不替代真环境联调(verify-onboarding 六项出口门)。
|
||||
set -u
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
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 应用市场
|
||||
@@ -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 型不需要镜像段) | 仓库根 |
|
||||
| 平台地址 | 用户告知(workflow 默认 `http://gateway:8080`) | Gitea Variable `TICKSHIELD_PORTAL_URL`,不写死 |
|
||||
| 应用凭证 | **平台基座「接入应用」功能获取**(APP_KEY == listingKey、APP_SECRET) | 人配到 Gitea 仓库 Secrets;绝不进对话/文件 |
|
||||
@@ -41,7 +41,7 @@ description: 改造目标项目 Gitea Actions CI/CD 工作流的应用部署 job
|
||||
| 探测项 | 怎么探 | 判定/用途 |
|
||||
|---|---|---|
|
||||
| 已有 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 |
|
||||
| Dockerfile | glob `Dockerfile*` | service/micro 无 → die 指路 `runtime-image` |
|
||||
| 现有构建段镜像 ref(改造模式) | 读现有 workflow 的 build/push 步骤 | 发布 job 用同一表达式重算镜像 ref,保证与构建产物一致 |
|
||||
@@ -139,7 +139,7 @@ fail-fast 分级:无 manifest / 无 Dockerfile / manifest 含 deployDescriptor
|
||||
| 401 凭证无效 | 凭证未签发/secrets 填错 | 平台基座「接入应用」获取凭证;核对 APP_KEY == listingKey |
|
||||
| 403 `listingKey mismatch` | --key 与凭证 listingKey 不符 | key 只从 manifest 取,不另配(约束⑥) |
|
||||
| 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 | 传构建产物目录本身(约束⑤) |
|
||||
| 413 | 产物包超 64MB | 精简产物/排查打包内容 |
|
||||
| 409 `submit a manifest first` | 无生效版本就单独 `--image` | manifest 与 image 同一条 publish 命令(约束④) |
|
||||
@@ -166,7 +166,7 @@ die 消息统一三段式:是什么 + 为什么(后果) + 怎么办。
|
||||
|
||||
## 边界:这些不归本 skill 管
|
||||
|
||||
- 应用代码开发/审查/手工发布指引(归 `dev-app`;本 skill 只接管 CI 里的发布环节)
|
||||
- 应用代码开发/审查/手工发布指引(归 `app-dev`;本 skill 只接管 CI 里的发布环节)
|
||||
- 通用 Gitea Actions 构建部署规范、基础镜像内网落盘(归 `gitea-actions`;新建模式的构建段只是最小可用)
|
||||
- Dockerfile 选型/评审(归 `runtime-image`)
|
||||
- git 提交、推送、日报(归 `push-and-report`)
|
||||
|
||||
@@ -52,7 +52,7 @@ description: 交互式创建新 Skill 的流水线:通过一问一答逐步采
|
||||
- 工具/名词(`docker push`、`xrel_`、某 MCP 工具名)
|
||||
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』两个字」)
|
||||
|
||||
Reference in new issue
Block a user