@agile-team/wl-skills-gate 0.6.1 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +101 -54
- package/assets/brand-tokens.json +162 -0
- package/assets/wl-bd-logo-dark.svg +29 -0
- package/assets/wl-bd-logo.svg +29 -0
- package/assets/wl-brand-lockup-dark.svg +1 -0
- package/assets/wl-brand-lockup.svg +1 -0
- package/assets/wl-design-logo-dark.svg +29 -0
- package/assets/wl-design-logo.svg +29 -0
- package/assets/wl-gate-logo-dark.svg +29 -0
- package/assets/wl-gate-logo.svg +29 -0
- package/assets/wl-kit-logo-dark.svg +29 -0
- package/assets/wl-kit-logo.svg +29 -0
- package/assets/wl-mark-small.svg +3 -0
- package/assets/wl-mark.svg +3 -0
- package/assets/wl-test-logo-dark.svg +29 -0
- package/assets/wl-test-logo.svg +29 -0
- package/assets/wl-ui-logo-dark.svg +29 -0
- package/assets/wl-ui-logo.svg +29 -0
- package/assets/wl-wordmark-dark.svg +5 -0
- package/assets/wl-wordmark.svg +5 -0
- package/bin/wl-skills-gate.js +180 -8
- package/docs/01-quick-start.md +2 -2
- package/docs/02-config.md +7 -3
- package/docs/05-adapters.md +12 -2
- package/docs/06-gitlab.md +7 -5
- package/docs/09-selftest-coverage.md +4 -2
- package/docs/10-enforcement.md +2 -2
- package/docs/13-quality-cost-and-isolation.md +6 -6
- package/docs/14-low-token-execution.md +8 -8
- package/docs/15-java-report-triage.md +1 -1
- package/docs/16-project-ci-integration.md +64 -0
- package/docs/17-onboarding.md +75 -0
- package/docs/18-ci-source.md +42 -0
- package/docs/19-nine-dimension-review.md +105 -0
- package/docs/README.md +14 -8
- package/fixtures/onboarding/README.md +3 -0
- package/fixtures/onboarding/quality-audit-profile.xml +51 -0
- package/fixtures/onboarding/quality-unit-profile.xml +101 -0
- package/lib/adapters/cmd-json.js +12 -10
- package/lib/adapters/java-xml.js +3 -2
- package/lib/adapters/junit.js +78 -13
- package/lib/adapters/raw-json.js +4 -3
- package/lib/adapters/sarif.js +3 -3
- package/lib/automation.js +247 -0
- package/lib/ci-discovery.js +227 -0
- package/lib/ci-source.js +203 -0
- package/lib/config.js +7 -4
- package/lib/control-deployment.js +44 -0
- package/lib/control-service.js +244 -0
- package/lib/control-store.js +120 -0
- package/lib/deployment-delivery.js +89 -0
- package/lib/deployment-queue.js +101 -0
- package/lib/deployment.js +217 -0
- package/lib/doctor.js +110 -0
- package/lib/evidence.js +59 -7
- package/lib/fix.js +61 -9
- package/lib/governance-notifications.js +45 -0
- package/lib/governance.js +521 -0
- package/lib/identity.js +49 -0
- package/lib/lifecycle-source.js +161 -0
- package/lib/onboard-complete.js +333 -0
- package/lib/onboard-config.js +556 -0
- package/lib/onboard-environment.js +37 -0
- package/lib/onboard-legacy.js +43 -0
- package/lib/onboard-lifecycle.js +117 -0
- package/lib/onboard-registry.js +93 -0
- package/lib/onboard.js +118 -0
- package/lib/promote.js +17 -5
- package/lib/release-set.js +138 -0
- package/lib/report-input.js +22 -8
- package/lib/report-producers.js +37 -19
- package/lib/report-selection.js +136 -0
- package/lib/review-additions.js +159 -0
- package/lib/review-auto.js +75 -0
- package/lib/review-ci.js +119 -0
- package/lib/review-collect.js +146 -0
- package/lib/review-facts.js +160 -0
- package/lib/review-live.js +30 -0
- package/lib/review-publication.js +85 -0
- package/lib/review-publish.js +191 -0
- package/lib/review.js +376 -0
- package/lib/run.js +28 -5
- package/lib/yaml-lite.js +5 -0
- package/package.json +6 -4
- package/schemas/quality-summary.schema.json +22 -0
- package/scripts/lib-tests/automation.test.mjs +126 -0
- package/scripts/lib-tests/ci-discovery.test.mjs +123 -0
- package/scripts/lib-tests/ci-source.test.mjs +153 -0
- package/scripts/lib-tests/control-review.test.mjs +110 -0
- package/scripts/lib-tests/control-service.test.mjs +88 -0
- package/scripts/lib-tests/control-store.test.mjs +77 -0
- package/scripts/lib-tests/deployment-http.test.mjs +66 -0
- package/scripts/lib-tests/deployment.test.mjs +250 -0
- package/scripts/lib-tests/doctor.test.mjs +106 -0
- package/scripts/lib-tests/fix-state.test.mjs +55 -0
- package/scripts/lib-tests/governance-lifecycle.test.mjs +131 -0
- package/scripts/lib-tests/governance.test.mjs +240 -0
- package/scripts/lib-tests/java-unit-wrapper.test.mjs +107 -0
- package/scripts/lib-tests/junit-evidence.test.mjs +214 -0
- package/scripts/lib-tests/lifecycle-source.test.mjs +135 -0
- package/scripts/lib-tests/onboard-complete.test.mjs +324 -0
- package/scripts/lib-tests/onboard-registry.test.mjs +51 -0
- package/scripts/lib-tests/onboard-review-facts.test.mjs +89 -0
- package/scripts/lib-tests/onboard.test.mjs +180 -0
- package/scripts/lib-tests/review-additions.test.mjs +98 -0
- package/scripts/lib-tests/review-auto.test.mjs +94 -0
- package/scripts/lib-tests/review-ci.test.mjs +72 -0
- package/scripts/lib-tests/review-collect.test.mjs +61 -0
- package/scripts/lib-tests/review-facts.test.mjs +44 -0
- package/scripts/lib-tests/review-publication.test.mjs +47 -0
- package/scripts/lib-tests/review-publish.test.mjs +89 -0
- package/scripts/lib-tests/review.test.mjs +212 -0
- package/scripts/lib-tests/yaml-lite.test.mjs +21 -0
- package/scripts/run-integration.mjs +49 -7
- package/scripts/test-support/control-review-fixture.mjs +57 -0
- package/scripts/test-support/review-collect-fixture.mjs +47 -0
- package/templates/ci/Jenkinsfile +58 -0
- package/templates/ci/Jenkinsfile.attest +32 -0
- package/templates/ci/Jenkinsfile.automation +20 -0
- package/templates/ci/Jenkinsfile.deployment +78 -0
- package/templates/ci/Jenkinsfile.release-sign +26 -0
- package/templates/ci/Jenkinsfile.review-sign +30 -0
- package/templates/ci/central-review.sh +10 -0
- package/templates/ci/controlled-deployment-http.mjs +72 -0
- package/templates/ci/create-deployment-facts.mjs +7 -0
- package/templates/ci/deployment-http.json +14 -0
- package/templates/ci/gitlab-backend.yml +40 -0
- package/templates/ci/gitlab-frontend.yml +32 -0
- package/templates/ci/produce-review-facts.mjs +15 -0
- package/templates/ci/publish-reviews.mjs +5 -0
- package/templates/ci/sign-collected-release.mjs +7 -0
- package/templates/ci/wl-quality-automation.service +18 -0
- package/templates/ci/wl-quality-control.service +18 -0
- package/templates/onboarding/automation/ide-tasks.json +31 -0
- package/templates/onboarding/automation/project-actions.mjs +266 -0
- package/templates/onboarding/backend/java-unit.mjs +84 -0
- package/templates/onboarding/backend/java-unit.plan.json +15 -0
- package/templates/onboarding/backend/policy.yml +63 -0
- package/templates/onboarding/backend/quality-tools.package.json +9 -0
- package/templates/onboarding/backend/run.mjs +10 -0
- package/templates/onboarding/frontend/policy.yml +40 -0
- package/templates/onboarding/legacy/backend-commit-msg.sh +21 -0
- package/templates/onboarding/legacy/frontend-common-core-postinstall.mjs +52 -0
- package/templates/onboarding/legacy/frontend-enforce-pnpm.mjs +9 -0
- package/templates/onboarding/legacy/frontend-pre-commit.sh +15 -0
- package/templates/onboarding/legacy/frontend-pre-push.sh +16 -0
- package/templates/platform/README.md +33 -0
- package/templates/platform/action.example.json +15 -0
- package/templates/platform/automation-config.json +66 -0
- package/templates/platform/ci-source.backend.json +40 -0
- package/templates/platform/ci-source.frontend.json +42 -0
- package/templates/platform/ci-source.gitlab.json +18 -0
- package/templates/platform/ci-source.jenkins.json +31 -0
- package/templates/platform/control-config.json +48 -0
- package/templates/platform/deployment-config.json +92 -0
- package/templates/platform/event.example.json +17 -0
- package/templates/platform/expectations.example.json +16 -0
- package/templates/platform/governance-config.json +106 -0
- package/templates/platform/lifecycle-event.example.json +29 -0
- package/templates/platform/review-ci.backend.json +6 -0
- package/templates/platform/review-ci.frontend.json +6 -0
- package/templates/platform/review-collector.backend.json +59 -0
- package/templates/platform/review-collector.frontend.json +67 -0
- package/templates/platform/review-policy.backend.json +72 -0
- package/templates/platform/review-policy.frontend.json +71 -0
- package/templates/platform/review-publish-config.json +45 -0
- package/templates/quality/java-unit.plan.json +13 -0
- package/templates/quality/review-evidence.plan.json +11 -0
- package/templates/quality/review-input.example.json +25 -0
- package/templates/quality/review-policy.json +15 -0
- package/templates/quality/rules.lock.json +1 -1
- package/templates/scripts-quality/java-unit.mjs +83 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
## [0.9.1] — 2026-10-15
|
|
2
|
+
|
|
3
|
+
- 重写 README:按实际能力梳理定位、接入步骤、使用场景与验证入口,完整细节保留在对应手册。
|
|
4
|
+
- 统一 World Leading 精密工业系列 Logo,提供深浅色版本并纳入 npm 发布内容。
|
|
5
|
+
- 接入固定依赖同步至 Kit 2.33.1、UI 1.22.1、BD 0.41.1,完整接入同时核对对应实际安装版本。
|
|
6
|
+
|
|
7
|
+
# 0.9.0 — 2026-10-15
|
|
8
|
+
|
|
9
|
+
- 修复接入环境与依赖准备、候选Review上下文和索引、删除/暂存区修复恢复、真实阻断与必要环境关闭、消息隔离。
|
|
10
|
+
- 补齐真实CI发现与可恢复调度、九维原件采集/补证/认证确认、授权前CI重新核验、OIDC处理页与投递恢复。
|
|
11
|
+
- 补齐独立签发、前后端组合与API/数据库/顺序约束、单次部署授权、实际冒烟和显式故障恢复。
|
|
12
|
+
- 重整README为接入、运行流程与文档入口,提供可复用的WL系列字标及Gate品牌资产。
|
|
13
|
+
- 本地源码和独立tgz分别验收;业务仓库、远端权限/群/SSO与真实业务必测仍以现场回执确认。
|
|
14
|
+
|
|
15
|
+
# 0.8.0 — 2026-10-15(本地交付候选,未发布)
|
|
16
|
+
|
|
17
|
+
- Gate 收入版本化前后端接入资产和 onboard,识别实际项目、显示完整差异并绑定确认;quality-tools 明确为后端私有 Node 依赖目录。
|
|
18
|
+
- 九维 Review 草稿、同口径修前修后对比、原始证据重算和逐维独立授权;正式签发及晋级强制要求 v2 记录,旧的仅身份/SHA批准不再放行。
|
|
19
|
+
- 固定 GitLab/Jenkins API 只读采集、真实 SHA/ref/全部必需作业与精确工件校验;拒绝 WebHook 自报成功、allow_failure、缺项、取消/跳过旧报告和采集中漂移。
|
|
20
|
+
- 飞书分类卡片、Review/构建/部署独立事实流共用签名台账与待发箱;构建成功、投递成功不会关闭质量问题。
|
|
21
|
+
- 文档明确包内实现、项目实接、远端权限/身份/存储与业务复验的验收责任;本地候选不代表 registry 发布或生产已接通。
|
|
22
|
+
|
|
23
|
+
# 0.7.0 — 2026-10-13(源码修订,未发布)
|
|
24
|
+
|
|
25
|
+
- JUnit 多模块明确 files/reportDirs/requiredSuites,报告全集、必测计数、生产一次和终轮摘要验证;拒绝旧 XML、源码覆盖、解析损坏与后续篡改。
|
|
26
|
+
- doctor 只读预检项目接线,Java 单测包装器明确模块/报告全集与依赖准备,补充前后端 GitLab 和 Jenkins 接线片段。
|
|
27
|
+
- governance 最小中央签名事件台账、独立复核关闭、漏跑对账、自然分钟 SLA、消息摘要/认证跳转、飞书签名与企业微信投递;默认预览。并发租约、未知投递和死信显式失败。
|
|
28
|
+
- 台账固定配置/公钥身份,动作和通知绑定当前 revision;拒绝过期卡片、输出路径别名与损坏台账。平台 API/SSO 查询、真实接线、服务和群投递仍须操作手册实测。
|
|
29
|
+
- 同步 V3 三份文档职责与精选 code-scan-kit 规则已正式集成的定位;无需 AI API。
|
|
30
|
+
|
|
1
31
|
# 0.6.1 — 2026-10-12
|
|
2
32
|
|
|
3
33
|
- npm 发布访问策略改为 public;公开获取与使用授权分开,保留 UNLICENSED,不授予开源许可。
|
package/README.md
CHANGED
|
@@ -1,79 +1,126 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/ChenyCHENYU/wl-skills-gate/main/assets/wl-gate-logo-dark.svg" />
|
|
4
|
+
<img src="https://raw.githubusercontent.com/ChenyCHENYU/wl-skills-gate/main/assets/wl-gate-logo.svg" width="100%" alt="WL skills-gate · World Leading · Quality Automation" />
|
|
5
|
+
</picture>
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
|
-
|
|
8
|
+
<p align="center"><strong>让项目检查、修复复扫、九维 Review 与构建发布接成一条可验证的质量流程。</strong></p>
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://www.npmjs.com/package/@agile-team/wl-skills-gate"><img src="https://img.shields.io/npm/v/@agile-team/wl-skills-gate?color=087A7D&label=npm" alt="npm version" /></a>
|
|
12
|
+
<img src="https://img.shields.io/badge/Node.js-%E2%89%A522.12-172634" alt="Node.js 22.12 or later" />
|
|
13
|
+
<img src="https://img.shields.io/badge/runtime_dependencies-0-087A7D" alt="Zero runtime dependencies" />
|
|
14
|
+
</p>
|
|
6
15
|
|
|
7
|
-
|
|
16
|
+
<p align="center">
|
|
17
|
+
<a href="#快速接入">快速接入</a> · <a href="#日常怎么用">日常流程</a> · <a href="#流水线怎么接">流水线接线</a> · <a href="./docs/README.md">技术手册</a>
|
|
18
|
+
</p>
|
|
8
19
|
|
|
9
|
-
|
|
20
|
+
## 解决什么
|
|
10
21
|
|
|
11
|
-
|
|
22
|
+
Gate 是质量执行与裁决层,复用项目已有检查器和适用的 WL 规则包。检查、报告、机械修复、复扫和通知由脚本执行,不调用大模型 API。
|
|
12
23
|
|
|
13
|
-
|
|
24
|
+
| 场景 | Gate 提供什么 | 能看到什么 |
|
|
25
|
+
| --- | --- | --- |
|
|
26
|
+
| 日常提交 | Hook 自动运行分档检查 | 问题位置、规则、修复建议与阻断原因 |
|
|
27
|
+
| 问题整改 | 预览方案 → 本人确认 → 白名单脚本 → 复扫 | 修前修后变化、剩余问题与回归项 |
|
|
28
|
+
| Code Review | 汇总九维证据,生成待确认草稿 | 非作者逐维确认后的正式 Review |
|
|
29
|
+
| 合并与发布 | 核验候选 SHA、必需检查、Review、制品和目标环境 | 绑定本次代码与制品的放行或拒绝结果 |
|
|
30
|
+
| 问题跟进 | 分类通知、认领、超时对账、独立复验 | 可追溯的处理与关闭记录 |
|
|
14
31
|
|
|
15
|
-
|
|
32
|
+
**九维范围:** 提交 · 分支 · 编码 · UI 与交互 · Code Review · 测试 · 扫描门禁 · CI/CD · 工程治理。
|
|
16
33
|
|
|
17
|
-
|
|
18
|
-
|---|---|---|
|
|
19
|
-
| 三档检查 | `run --profile fast/standard/release` | 退出码 0/1/2;失败也归档;release 要求真实干净 HEAD、合法环境、最低检查集与实际工具版本锁 |
|
|
20
|
-
| 报告 | `validate-report` | JSON/Markdown/HTML;Code Quality JSON 自动导出;JUnit 保留真实生产者 XML,不能拿转换后的计数替代原始测试报告 |
|
|
21
|
-
| 精简查询 | `inspect <quality-summary.json>` | 默认摘要;按规则/等级/状态分页;默认 12,000 UTF-8 字节上限;只读现有报告,保留原判定与全量计数,不能替代可信门禁证据 |
|
|
22
|
-
| 成本统计 | `cost <artifact-dir> --out <metrics.json>` | 离线汇总各档/各检查 P50/P95、共享生产次数、候选重复;真实 usage 可选导入,缺失保持未知,不调用模型 |
|
|
23
|
-
| 机械修复 | `fix --plan`、`fix --apply --confirm` | standard 全量报告;文件快照、白名单、防漂移、异常回滚、强制复扫;只进入待复验,不能自动关闭业务问题 |
|
|
24
|
-
| 候选检查 | `promote` | 在无特权 Runner 中合并、准备依赖、检查并归档 bundle;不更新共享分支 |
|
|
25
|
-
| 受控晋级 | `promote-apply` | 核验签名证明和独立 Review,在新 bare 仓库中核验最新远端 HEAD 后核验父提交后以批准的旧 HEAD 条件更新;不运行项目脚本或 Hook |
|
|
26
|
-
| 制品清单 | `manifest` | 绑定真实 HEAD、环境、实际文件/目录及可选配置、数据脚本摘要 |
|
|
27
|
-
| 证明签发 | `attest` | 受控独立作业签发 Ed25519 证明;仅签通过的 standard/release 证据 |
|
|
28
|
-
| Review 签发 | `review-sign` | 受控 Reviewer 作业,身份取自平台认证;非作者、候选绑定、阻断问题已处置 |
|
|
29
|
-
| 部署验证 | `verify-artifact` | 固定公钥、签发者和作业 ID、SHA、release 档、环境、策略/基线/例外、时效、真实制品摘要全部核验 |
|
|
30
|
-
| 自测 | `self-test`、`npm test` | self-test 只跑 29 个 fixture;npm test 额外跑单元与本地 Git/签名/制品集成 |
|
|
34
|
+
## 快速接入
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
由技术经理在**实际 Git 项目根目录**接入一次。准备 Node.js ≥22.12、项目固定的包管理器和原有构建工具;安装源使用团队批准的 HTTPS registry。
|
|
33
37
|
|
|
34
|
-
|
|
38
|
+
### 1. 预览项目接入计划
|
|
35
39
|
|
|
36
40
|
```bash
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
# 按真实技术栈配置 quality/policy.yml 和 rules.lock.json;工具需实际安装。
|
|
40
|
-
pnpm exec wl-skills-gate run --profile standard
|
|
41
|
-
pnpm exec wl-skills-gate validate-report quality-reports/quality-summary.json
|
|
42
|
-
# 给人工/AI 查看现有报告,不再执行扫描;完整报告仍独立归档。
|
|
43
|
-
pnpm exec wl-skills-gate inspect quality-reports/quality-summary.json
|
|
44
|
-
pnpm exec wl-skills-gate inspect quality-reports/quality-summary.json --view findings --status new --limit 10
|
|
41
|
+
npx --yes @agile-team/wl-skills-gate@latest onboard \
|
|
42
|
+
--root . --complete --registry https://registry.npmjs.org
|
|
45
43
|
```
|
|
46
44
|
|
|
47
|
-
|
|
45
|
+
查看识别的项目类型、依赖版本、文件差异、Hook 和阻断项。脚本与模板随 Gate 包交付,无需从文档复制拼装。
|
|
48
46
|
|
|
49
|
-
|
|
47
|
+
| 项目 | 依赖装在哪里 | 业务构建 |
|
|
48
|
+
| --- | --- | --- |
|
|
49
|
+
| PC Vue 管理端,如 `wl-ui-produce` | 项目 `package.json`:Gate / Kit / UI | 保留原前端构建 |
|
|
50
|
+
| Java/Maven,如 `wl-produce` | `quality-tools/package.json`:Gate / BD | 保留 Maven,Node 工具不进入 jar |
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
`quality-tools/` 只是 Java 仓库里的 Node 工具依赖目录。内置后端配套针对 `wl-produce` PL 模块;其他 Maven 项目先由负责人配置模块与必测。移动端、UniApp 不套用 PC 配套。
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
- P3C 使用 `format: p3c`;XML 的 PMD 引擎版本与 P3C 提供者版本分开记录,未提供的版本保持未知。
|
|
55
|
-
- SpotBugs 多模块配置显式 `sourceRoots`。未配置只兼容实际存在的单模块 `src/main/java`;缺失、歧义和符号链接定位返回 invalid。
|
|
56
|
-
- 成员身份进入 Java 指纹,旧成员基线可能需要重新审查。七项 PMD 底线不可基线/豁免;SpotBugs 四类上下文复核 warning 保留发现,不自动排除。
|
|
57
|
-
- `rules.lock.json` 的 Gate 版本须与实际安装版本一致;模板中的检查器版本占位值仍需替换为真实版本。
|
|
54
|
+
### 2. 确认并应用这份计划
|
|
58
55
|
|
|
59
|
-
|
|
56
|
+
```bash
|
|
57
|
+
npx --yes @agile-team/wl-skills-gate@latest onboard \
|
|
58
|
+
--root . --complete --registry https://registry.npmjs.org \
|
|
59
|
+
--apply --plan-hash "<本次返回的 planHash>" --confirm
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
程序按计划安装固定依赖、同步规则、配置 Hook、执行首扫与提交说明正反验证。首次安装后如出现原生规则或 POM 新差异,会返回新的待确认阶段;用同一入口重新预览、确认后续跑。
|
|
63
|
+
|
|
64
|
+
### 3. 验证本地与远端效果
|
|
65
|
+
|
|
66
|
+
| 验收点 | 成功依据 |
|
|
67
|
+
| --- | --- |
|
|
68
|
+
| 本地接入 | 返回 `local-validated-awaiting-remote-acceptance`;首扫通过、合规提交说明通过、违规说明被拦截 |
|
|
69
|
+
| 首份质量报告 | 打开 `quality-reports/quality-report.html`;结构化结果在 `quality-summary.json` |
|
|
70
|
+
| 接入执行记录 | `quality-reports/onboarding/execution.json` 显示本次实际阶段与结果 |
|
|
71
|
+
| 远端强制检查 | 按下节接线,在真实 MR / 构建中验证失败拒绝、通过放行与消息送达 |
|
|
72
|
+
|
|
73
|
+
本地接入通过后,再完成 CI、Review、通知和部署验收。完整步骤与状态说明见 [接入指南](./docs/17-onboarding.md)。
|
|
74
|
+
|
|
75
|
+
## 日常怎么用
|
|
76
|
+
|
|
77
|
+
开发者正常提交、推送;Hook 自动检查。以 `wl-ui-produce` 修改订单列表为例:
|
|
78
|
+
|
|
79
|
+
| 步骤 | 开发者 / 负责人做什么 | 系统给出什么 |
|
|
80
|
+
| --- | --- | --- |
|
|
81
|
+
| 提交前 | 按原流程暂存、提交代码 | 快速检查;有阻断显示具体位置和建议 |
|
|
82
|
+
| 推送前 | 正常推送 | 标准检查、HTML 报告;已配置 Review 策略时自动生成九维草稿 |
|
|
83
|
+
| 处理问题 | 在已生成的编辑器任务中选择“预览脚本修复”,核对并确认 | 执行批准的机械脚本、自动复扫,展示差异;语义问题保留人工处理 |
|
|
84
|
+
| 发起 Review | 非作者查看代码、补齐实际交互与业务证据、逐维确认 | 绑定当前候选与证据的正式 Review |
|
|
85
|
+
| 构建发布 | 通过受控流水线推进 | 核验本次候选、检查和制品;部署后独立复验再关闭问题 |
|
|
86
|
+
|
|
87
|
+
同口径的修前修后报告才展示质量变化。扫描通过、Review 确认、发布授权和问题关闭分别核验;一项通过不会代替其余步骤。
|
|
88
|
+
|
|
89
|
+
## 流水线怎么接
|
|
90
|
+
|
|
91
|
+
由 GitLab / Jenkins 维护者接线,项目负责人确认规则与必测,通知负责人配置群与分类。执行模板都在本包中。
|
|
92
|
+
|
|
93
|
+
| 接线内容 | 入口 | 验证方式 |
|
|
94
|
+
| --- | --- | --- |
|
|
95
|
+
| GitLab MR、候选与受保护分支 | [CI 模板](./templates/ci) · [GitLab 指南](./docs/06-gitlab.md) | 违规候选不能合并,真实必需作业齐全 |
|
|
96
|
+
| Jenkins 构建、制品与部署 | [Jenkins 指南](./docs/07-jenkins.md) | SHA、制品摘要、目标环境一致,缺证据拒绝推进 |
|
|
97
|
+
| 真实 CI 证据、身份与 Review | [可信 CI 采集](./docs/18-ci-source.md) · [九维 Review](./docs/19-nine-dimension-review.md) | 旧报告、缺证据、自审与过期批准被拒绝 |
|
|
98
|
+
| 飞书通知、认领、超时与复验 | [中央执行接线](./templates/platform/README.md) | 实际送达、失败重试、认领和独立关闭均留记录 |
|
|
99
|
+
|
|
100
|
+
项目检查作业与受控签发、部署、通知作业隔离。Hook 提供早反馈;服务端强制检查负责防绕过。
|
|
60
101
|
|
|
61
|
-
|
|
102
|
+
## 按需深入
|
|
62
103
|
|
|
63
|
-
|
|
104
|
+
| 要做什么 | 文档 |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| 调整检查器、范围、等级与例外 | [策略配置](./docs/02-config.md) · [适配器](./docs/05-adapters.md) |
|
|
107
|
+
| 维护修复白名单、漂移检查与回滚 | [修复闭环](./docs/04-fix-loop.md) |
|
|
108
|
+
| 只读定位问题,减少重复扫描与上下文 | [低 token 执行](./docs/14-low-token-execution.md) · [Java 报告分级](./docs/15-java-report-triage.md) |
|
|
109
|
+
| 排查接入与环境问题 | [项目与运维集成](./docs/16-project-ci-integration.md) · [完整索引](./docs/README.md) |
|
|
64
110
|
|
|
65
|
-
|
|
111
|
+
检查退出码:`0` 通过,`1` 质量阻断,`2` 执行或证据无效。后两者都需要处理,不得以历史绿报告替代本轮结果。
|
|
66
112
|
|
|
67
|
-
|
|
68
|
-
- `run` 生成的是 `unsigned-gate-result`;部署拒收 unsigned。签发与检查使用不同凭据和执行环境。
|
|
69
|
-
- `verify-artifact` 必须提供固定公钥、受控期望、环境、清单与实际制品根目录,详见 [Jenkins](docs/07-jenkins.md)。
|
|
70
|
-
- `cmd-json` 默认成功退出码为 `[0]`;工具“发现问题返回 1”需显式登记 `[0,1]`,且报告有相应问题证据。
|
|
71
|
-
- 基线项增加 `severity`、`occurrenceCount`。blocker、类型/关键测试等质量底线不能基线化或豁免。
|
|
72
|
-
- 旧修复计划需重新生成。报告中的任意 `fixCommand` 不再执行;仅使用内置 ESLint 修复或政策登记的 fixer。
|
|
73
|
-
- 必需测试跳过、零用例、计数与明细不一致会阻断。部分暂存存在未暂存修改时,快检拒绝。
|
|
113
|
+
## WL 系列
|
|
74
114
|
|
|
75
|
-
|
|
115
|
+
**WL = World Leading。** 按职责组合,未使用的包无需安装。
|
|
76
116
|
|
|
77
|
-
|
|
117
|
+
| 包 | 职责 |
|
|
118
|
+
| --- | --- |
|
|
119
|
+
| **Gate** | 统一接入、检查裁决、修复复扫、Review 与发布证据 |
|
|
120
|
+
| [Kit](https://github.com/ChenyCHENYU/wl-skills-kit) | PC Vue 管理端需求、契约、代码生成与工程规范 |
|
|
121
|
+
| [UI](https://github.com/ChenyCHENYU/wl-skills-ui) | PC 管理端设计令牌、样式与交互质量 |
|
|
122
|
+
| [BD](https://github.com/ChenyCHENYU/wl-skills-bd) | Java 后端规范、契约与检查能力 |
|
|
123
|
+
| [Test](https://github.com/ChenyCHENYU/wl-skills-test) | 测试设计、执行与结果验证 |
|
|
124
|
+
| [Design](https://github.com/ChenyCHENYU/wl-skills-design) | 需求与设计模型、交付契约 |
|
|
78
125
|
|
|
79
|
-
|
|
126
|
+
使用授权见 [LICENSE](./LICENSE)。问题反馈请附包版本、执行命令和脱敏报告,提交至 [Issues](https://github.com/ChenyCHENYU/wl-skills-gate/issues)。
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"brand": "World Leading",
|
|
4
|
+
"acronym": "WL",
|
|
5
|
+
"series": "World Leading",
|
|
6
|
+
"product": "skills-gate",
|
|
7
|
+
"tagline": "Automated quality workflow",
|
|
8
|
+
"mark": {
|
|
9
|
+
"file": "wl-mark.svg",
|
|
10
|
+
"viewBox": "0 0 256 168",
|
|
11
|
+
"color": "currentColor",
|
|
12
|
+
"minimumWidthPx": 48,
|
|
13
|
+
"smallVariant": {
|
|
14
|
+
"file": "wl-mark-small.svg",
|
|
15
|
+
"minimumWidthPx": 32,
|
|
16
|
+
"opticalAdjustment": "L moves 8 viewBox units to preserve a 2px gap at 32px width"
|
|
17
|
+
},
|
|
18
|
+
"clearSpace": "At least half the cap height",
|
|
19
|
+
"construction": {
|
|
20
|
+
"wPath": "M18 24H42L58 84L82 24H104L126 84L145 24H170L134 136H111L93 100L76 136H53Z",
|
|
21
|
+
"lPath": "M181 24H205L174 112H226L218 136H142Z",
|
|
22
|
+
"language": "Precision-cut W and forward-cut L; preserve geometry across products"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"wordmark": {
|
|
26
|
+
"light": "wl-wordmark.svg",
|
|
27
|
+
"dark": "wl-wordmark-dark.svg",
|
|
28
|
+
"viewBox": "0 0 760 160"
|
|
29
|
+
},
|
|
30
|
+
"banner": {
|
|
31
|
+
"viewBox": "0 0 1280 340",
|
|
32
|
+
"light": "wl-gate-logo.svg",
|
|
33
|
+
"dark": "wl-gate-logo-dark.svg",
|
|
34
|
+
"cornerRadius": 16
|
|
35
|
+
},
|
|
36
|
+
"palette": {
|
|
37
|
+
"obsidian": "#0B1119",
|
|
38
|
+
"graphite": "#111E2C",
|
|
39
|
+
"ink": "#172634",
|
|
40
|
+
"platinum": "#F0F4F6",
|
|
41
|
+
"silver": "#B8C3CE",
|
|
42
|
+
"paper": "#F7F8F8",
|
|
43
|
+
"gateLight": "#087A7D",
|
|
44
|
+
"gateDark": "#8DDEDC",
|
|
45
|
+
"textMutedLight": "#637686",
|
|
46
|
+
"textMutedDark": "#8E9FAF"
|
|
47
|
+
},
|
|
48
|
+
"typography": {
|
|
49
|
+
"family": "Helvetica Neue, Inter, Helvetica, Arial, sans-serif",
|
|
50
|
+
"productSize": 90,
|
|
51
|
+
"productWeight": 550,
|
|
52
|
+
"productTracking": -4,
|
|
53
|
+
"brandSize": 16,
|
|
54
|
+
"brandTracking": 3.15,
|
|
55
|
+
"taglineSize": 20
|
|
56
|
+
},
|
|
57
|
+
"extension": {
|
|
58
|
+
"shared": [
|
|
59
|
+
"WL monogram",
|
|
60
|
+
"WORLD LEADING below the monogram",
|
|
61
|
+
"Fixed brand/product zones",
|
|
62
|
+
"Product title with skills- prefix",
|
|
63
|
+
"Metadata and glyph grid"
|
|
64
|
+
],
|
|
65
|
+
"perProduct": [
|
|
66
|
+
"Package suffix",
|
|
67
|
+
"Module accent",
|
|
68
|
+
"Functional geometric symbol",
|
|
69
|
+
"Functional tagline",
|
|
70
|
+
"Exact npm package identifier"
|
|
71
|
+
],
|
|
72
|
+
"accentSuggestions": {
|
|
73
|
+
"gate": "#8DDEDC",
|
|
74
|
+
"kit": "#9CC5FF",
|
|
75
|
+
"ui": "#CCB8FF",
|
|
76
|
+
"test": "#E7A7B8",
|
|
77
|
+
"design": "#EAAF8A",
|
|
78
|
+
"bd": "#DFC291"
|
|
79
|
+
},
|
|
80
|
+
"examples": [
|
|
81
|
+
"skills-gate",
|
|
82
|
+
"skills-kit",
|
|
83
|
+
"skills-ui",
|
|
84
|
+
"skills-test",
|
|
85
|
+
"skills-design",
|
|
86
|
+
"skills-bd"
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
"production": {
|
|
90
|
+
"smallMarks": "Single flat color, no gradients",
|
|
91
|
+
"lightTheme": "Flat ink mark",
|
|
92
|
+
"darkTheme": "Subtle silver gradient is optional in banners",
|
|
93
|
+
"masterFiles": "All assets are native editable SVG"
|
|
94
|
+
},
|
|
95
|
+
"brandLockup": {
|
|
96
|
+
"light": "wl-brand-lockup.svg",
|
|
97
|
+
"dark": "wl-brand-lockup-dark.svg",
|
|
98
|
+
"arrangement": "WL above WORLD LEADING"
|
|
99
|
+
},
|
|
100
|
+
"packageFamily": {
|
|
101
|
+
"gate": {
|
|
102
|
+
"displayName": "skills-gate",
|
|
103
|
+
"npmName": "@agile-team/wl-skills-gate",
|
|
104
|
+
"category": "QUALITY AUTOMATION",
|
|
105
|
+
"tagline": "Checks · Review · Release",
|
|
106
|
+
"darkAccent": "#8DDEDC",
|
|
107
|
+
"lightAccent": "#087A7D",
|
|
108
|
+
"light": "wl-gate-logo.svg",
|
|
109
|
+
"dark": "wl-gate-logo-dark.svg"
|
|
110
|
+
},
|
|
111
|
+
"kit": {
|
|
112
|
+
"displayName": "skills-kit",
|
|
113
|
+
"npmName": "@agile-team/wl-skills-kit",
|
|
114
|
+
"category": "FRONTEND ENGINEERING",
|
|
115
|
+
"tagline": "Standards · Contracts · Workflows",
|
|
116
|
+
"darkAccent": "#9CC5FF",
|
|
117
|
+
"lightAccent": "#315E9F",
|
|
118
|
+
"light": "wl-kit-logo.svg",
|
|
119
|
+
"dark": "wl-kit-logo-dark.svg"
|
|
120
|
+
},
|
|
121
|
+
"ui": {
|
|
122
|
+
"displayName": "skills-ui",
|
|
123
|
+
"npmName": "@agile-team/wl-skills-ui",
|
|
124
|
+
"category": "INTERFACE QUALITY",
|
|
125
|
+
"tagline": "Tokens · Layouts · Interaction",
|
|
126
|
+
"darkAccent": "#CCB8FF",
|
|
127
|
+
"lightAccent": "#7053A7",
|
|
128
|
+
"light": "wl-ui-logo.svg",
|
|
129
|
+
"dark": "wl-ui-logo-dark.svg"
|
|
130
|
+
},
|
|
131
|
+
"test": {
|
|
132
|
+
"displayName": "skills-test",
|
|
133
|
+
"npmName": "@agile-team/wl-skills-test",
|
|
134
|
+
"category": "TEST ENGINEERING",
|
|
135
|
+
"tagline": "Cases · Automation · Evidence",
|
|
136
|
+
"darkAccent": "#E7A7B8",
|
|
137
|
+
"lightAccent": "#A34262",
|
|
138
|
+
"light": "wl-test-logo.svg",
|
|
139
|
+
"dark": "wl-test-logo-dark.svg"
|
|
140
|
+
},
|
|
141
|
+
"design": {
|
|
142
|
+
"displayName": "skills-design",
|
|
143
|
+
"npmName": "@agile-team/wl-skills-design",
|
|
144
|
+
"category": "PRODUCT DESIGN",
|
|
145
|
+
"tagline": "Requirements · Flows · Prototypes",
|
|
146
|
+
"darkAccent": "#EAAF8A",
|
|
147
|
+
"lightAccent": "#A45C2B",
|
|
148
|
+
"light": "wl-design-logo.svg",
|
|
149
|
+
"dark": "wl-design-logo-dark.svg"
|
|
150
|
+
},
|
|
151
|
+
"bd": {
|
|
152
|
+
"displayName": "skills-bd",
|
|
153
|
+
"npmName": "@agile-team/wl-skills-bd",
|
|
154
|
+
"category": "BACKEND ENGINEERING",
|
|
155
|
+
"tagline": "Java · Contracts · Quality",
|
|
156
|
+
"darkAccent": "#DFC291",
|
|
157
|
+
"lightAccent": "#886331",
|
|
158
|
+
"light": "wl-bd-logo.svg",
|
|
159
|
+
"dark": "wl-bd-logo-dark.svg"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 340" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">WL · World Leading · skills-bd</title>
|
|
3
|
+
<desc id="desc">World Leading signature on the left. The skills-bd package, backend engineering, on the right. Shared precision industrial identity.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="surface" x1="0" y1="0" x2="1280" y2="340" gradientUnits="userSpaceOnUse"><stop stop-color="#0B1119"/><stop offset="1" stop-color="#111E2C"/></linearGradient>
|
|
6
|
+
<linearGradient id="metal" x1="0" y1="22" x2="200" y2="149" gradientUnits="userSpaceOnUse"><stop stop-color="#F7FAFA"/><stop offset=".58" stop-color="#B4C3CE"/><stop offset="1" stop-color="#E7EEF2"/></linearGradient>
|
|
7
|
+
<linearGradient id="rule" gradientUnits="userSpaceOnUse" x1="400" y1="281" x2="1218" y2="281"><stop stop-color="#52677C" stop-opacity=".4"/><stop offset="1" stop-color="#52677C" stop-opacity=".12"/></linearGradient>
|
|
8
|
+
<clipPath id="canvas"><rect width="1280" height="340" rx="16"/></clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
<g clip-path="url(#canvas)">
|
|
11
|
+
<rect width="1280" height="340" fill="url(#surface)"/>
|
|
12
|
+
<path d="M1247 0H1280V340H1148Z" fill="#DFC291" opacity=".035"/>
|
|
13
|
+
<g transform="translate(60 58) scale(1.12)" fill="url(#metal)"><path d="M18 24H42L58 84L82 24H104L126 84L145 24H170L134 136H111L93 100L76 136H53Z"/><path d="M181 24H205L174 112H226L218 136H142Z"/><path d="M174 112H226L218 136H166Z" fill="#DFC291"/></g>
|
|
14
|
+
<text x="195" y="258" text-anchor="middle" fill="#9CAAB8" font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif" font-size="16" font-weight="500" letter-spacing="3.15">WORLD LEADING</text>
|
|
15
|
+
<path d="M352 72V278" stroke="#52677C" stroke-opacity=".35"/>
|
|
16
|
+
<path d="M352 153V192" stroke="#DFC291" stroke-opacity=".85" stroke-width="2"/>
|
|
17
|
+
<g font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif">
|
|
18
|
+
<text x="400" y="88" fill="#DFC291" font-size="12" font-weight="600" letter-spacing="3.5">BACKEND ENGINEERING</text>
|
|
19
|
+
<text x="393" y="187" font-size="90" letter-spacing="-4"><tspan fill="#9CAAB8" font-weight="350">skills-</tspan><tspan fill="#F0F4F6" font-weight="550">bd</tspan></text>
|
|
20
|
+
<text x="400" y="236" fill="#8E9FAF" font-size="20" font-weight="400" letter-spacing=".2">Java · Contracts · Quality</text>
|
|
21
|
+
</g>
|
|
22
|
+
<path d="M400 281H1218" stroke="url(#rule)"/>
|
|
23
|
+
<text x="400" y="311" fill="#8E9FAF" font-family="'SFMono-Regular', Consolas, 'Liberation Mono', monospace" font-size="13" letter-spacing=".15">@agile-team/wl-skills-bd</text>
|
|
24
|
+
<g transform="translate(1049 83) scale(1.68)" fill="none" stroke="#DFC291" stroke-linecap="square" stroke-linejoin="miter">
|
|
25
|
+
<path d="M8 23V8H23M73 8H88V23M88 73V88H73M23 88H8V73" stroke-width=".8" opacity=".22"/>
|
|
26
|
+
<g stroke-width="2" opacity=".85"><path d="M17 35 48 19 79 35 48 51ZM17 49 48 65 79 49M17 63 48 79 79 63"/><path d="M48 19 63 27" stroke-width="4"/></g>
|
|
27
|
+
</g>
|
|
28
|
+
<rect x=".5" y=".5" width="1279" height="339" rx="15.5" fill="none" stroke="#52677C" stroke-opacity=".2"/>
|
|
29
|
+
</g></svg>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 340" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">WL · World Leading · skills-bd</title>
|
|
3
|
+
<desc id="desc">World Leading signature on the left. The skills-bd package, backend engineering, on the right. Shared precision industrial identity.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="surface" x1="0" y1="0" x2="1280" y2="340" gradientUnits="userSpaceOnUse"><stop stop-color="#F7F8F8"/><stop offset="1" stop-color="#EFF2F4"/></linearGradient>
|
|
6
|
+
<linearGradient id="metal" x1="0" y1="22" x2="200" y2="149" gradientUnits="userSpaceOnUse"><stop stop-color="#21394D"/><stop offset=".58" stop-color="#0C2031"/><stop offset="1" stop-color="#284156"/></linearGradient>
|
|
7
|
+
<linearGradient id="rule" gradientUnits="userSpaceOnUse" x1="400" y1="281" x2="1218" y2="281"><stop stop-color="#AEBCC6" stop-opacity=".4"/><stop offset="1" stop-color="#AEBCC6" stop-opacity=".12"/></linearGradient>
|
|
8
|
+
<clipPath id="canvas"><rect width="1280" height="340" rx="16"/></clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
<g clip-path="url(#canvas)">
|
|
11
|
+
<rect width="1280" height="340" fill="url(#surface)"/>
|
|
12
|
+
<path d="M1247 0H1280V340H1148Z" fill="#886331" opacity=".04"/>
|
|
13
|
+
<g transform="translate(60 58) scale(1.12)" fill="#172634"><path d="M18 24H42L58 84L82 24H104L126 84L145 24H170L134 136H111L93 100L76 136H53Z"/><path d="M181 24H205L174 112H226L218 136H142Z"/><path d="M174 112H226L218 136H166Z" fill="#886331"/></g>
|
|
14
|
+
<text x="195" y="258" text-anchor="middle" fill="#687A89" font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif" font-size="16" font-weight="500" letter-spacing="3.15">WORLD LEADING</text>
|
|
15
|
+
<path d="M352 72V278" stroke="#AEBCC6" stroke-opacity=".35"/>
|
|
16
|
+
<path d="M352 153V192" stroke="#886331" stroke-opacity=".85" stroke-width="2"/>
|
|
17
|
+
<g font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif">
|
|
18
|
+
<text x="400" y="88" fill="#886331" font-size="12" font-weight="600" letter-spacing="3.5">BACKEND ENGINEERING</text>
|
|
19
|
+
<text x="393" y="187" font-size="90" letter-spacing="-4"><tspan fill="#687A89" font-weight="350">skills-</tspan><tspan fill="#172634" font-weight="550">bd</tspan></text>
|
|
20
|
+
<text x="400" y="236" fill="#637686" font-size="20" font-weight="400" letter-spacing=".2">Java · Contracts · Quality</text>
|
|
21
|
+
</g>
|
|
22
|
+
<path d="M400 281H1218" stroke="url(#rule)"/>
|
|
23
|
+
<text x="400" y="311" fill="#637686" font-family="'SFMono-Regular', Consolas, 'Liberation Mono', monospace" font-size="13" letter-spacing=".15">@agile-team/wl-skills-bd</text>
|
|
24
|
+
<g transform="translate(1049 83) scale(1.68)" fill="none" stroke="#886331" stroke-linecap="square" stroke-linejoin="miter">
|
|
25
|
+
<path d="M8 23V8H23M73 8H88V23M88 73V88H73M23 88H8V73" stroke-width=".8" opacity=".22"/>
|
|
26
|
+
<g stroke-width="2" opacity=".85"><path d="M17 35 48 19 79 35 48 51ZM17 49 48 65 79 49M17 63 48 79 79 63"/><path d="M48 19 63 27" stroke-width="4"/></g>
|
|
27
|
+
</g>
|
|
28
|
+
<rect x=".5" y=".5" width="1279" height="339" rx="15.5" fill="none" stroke="#AEBCC6" stroke-opacity=".2"/>
|
|
29
|
+
</g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 224" role="img" aria-labelledby="title desc"><title id="title">WL · World Leading</title><desc id="desc">Fixed World Leading parent-brand lockup. WL monogram above WORLD LEADING.</desc><g fill="#EEF1F2"><path d="M18 24H42L58 84L82 24H104L126 84L145 24H170L134 136H111L93 100L76 136H53Z"/><path d="M181 24H205L174 112H226L218 136H142Z"/></g><text x="122" y="187" text-anchor="middle" fill="#EEF1F2" font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif" font-size="12" font-weight="500" letter-spacing="2.9">WORLD LEADING</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 224" role="img" aria-labelledby="title desc"><title id="title">WL · World Leading</title><desc id="desc">Fixed World Leading parent-brand lockup. WL monogram above WORLD LEADING.</desc><g fill="#172634"><path d="M18 24H42L58 84L82 24H104L126 84L145 24H170L134 136H111L93 100L76 136H53Z"/><path d="M181 24H205L174 112H226L218 136H142Z"/></g><text x="122" y="187" text-anchor="middle" fill="#172634" font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif" font-size="12" font-weight="500" letter-spacing="2.9">WORLD LEADING</text></svg>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 340" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">WL · World Leading · skills-design</title>
|
|
3
|
+
<desc id="desc">World Leading signature on the left. The skills-design package, product design, on the right. Shared precision industrial identity.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="surface" x1="0" y1="0" x2="1280" y2="340" gradientUnits="userSpaceOnUse"><stop stop-color="#0B1119"/><stop offset="1" stop-color="#111E2C"/></linearGradient>
|
|
6
|
+
<linearGradient id="metal" x1="0" y1="22" x2="200" y2="149" gradientUnits="userSpaceOnUse"><stop stop-color="#F7FAFA"/><stop offset=".58" stop-color="#B4C3CE"/><stop offset="1" stop-color="#E7EEF2"/></linearGradient>
|
|
7
|
+
<linearGradient id="rule" gradientUnits="userSpaceOnUse" x1="400" y1="281" x2="1218" y2="281"><stop stop-color="#52677C" stop-opacity=".4"/><stop offset="1" stop-color="#52677C" stop-opacity=".12"/></linearGradient>
|
|
8
|
+
<clipPath id="canvas"><rect width="1280" height="340" rx="16"/></clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
<g clip-path="url(#canvas)">
|
|
11
|
+
<rect width="1280" height="340" fill="url(#surface)"/>
|
|
12
|
+
<path d="M1247 0H1280V340H1148Z" fill="#EAAF8A" opacity=".035"/>
|
|
13
|
+
<g transform="translate(60 58) scale(1.12)" fill="url(#metal)"><path d="M18 24H42L58 84L82 24H104L126 84L145 24H170L134 136H111L93 100L76 136H53Z"/><path d="M181 24H205L174 112H226L218 136H142Z"/><path d="M174 112H226L218 136H166Z" fill="#EAAF8A"/></g>
|
|
14
|
+
<text x="195" y="258" text-anchor="middle" fill="#9CAAB8" font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif" font-size="16" font-weight="500" letter-spacing="3.15">WORLD LEADING</text>
|
|
15
|
+
<path d="M352 72V278" stroke="#52677C" stroke-opacity=".35"/>
|
|
16
|
+
<path d="M352 153V192" stroke="#EAAF8A" stroke-opacity=".85" stroke-width="2"/>
|
|
17
|
+
<g font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif">
|
|
18
|
+
<text x="400" y="88" fill="#EAAF8A" font-size="12" font-weight="600" letter-spacing="3.5">PRODUCT DESIGN</text>
|
|
19
|
+
<text x="393" y="187" font-size="90" letter-spacing="-4"><tspan fill="#9CAAB8" font-weight="350">skills-</tspan><tspan fill="#F0F4F6" font-weight="550">design</tspan></text>
|
|
20
|
+
<text x="400" y="236" fill="#8E9FAF" font-size="20" font-weight="400" letter-spacing=".2">Requirements · Flows · Prototypes</text>
|
|
21
|
+
</g>
|
|
22
|
+
<path d="M400 281H1218" stroke="url(#rule)"/>
|
|
23
|
+
<text x="400" y="311" fill="#8E9FAF" font-family="'SFMono-Regular', Consolas, 'Liberation Mono', monospace" font-size="13" letter-spacing=".15">@agile-team/wl-skills-design</text>
|
|
24
|
+
<g transform="translate(1049 83) scale(1.68)" fill="none" stroke="#EAAF8A" stroke-linecap="square" stroke-linejoin="miter">
|
|
25
|
+
<path d="M8 23V8H23M73 8H88V23M88 73V88H73M23 88H8V73" stroke-width=".8" opacity=".22"/>
|
|
26
|
+
<g stroke-width="2" opacity=".85"><path d="M17 17H39V39H17ZM57 57H79V79H57ZM57 17H79V39H57ZM17 57H39V79H17ZM39 28H57M28 39V57M68 39V57M39 68H57"/><path d="M57 28 51 24M57 28 51 32"/><path d="M68 57 64 51M68 57 72 51"/></g>
|
|
27
|
+
</g>
|
|
28
|
+
<rect x=".5" y=".5" width="1279" height="339" rx="15.5" fill="none" stroke="#52677C" stroke-opacity=".2"/>
|
|
29
|
+
</g></svg>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 340" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">WL · World Leading · skills-design</title>
|
|
3
|
+
<desc id="desc">World Leading signature on the left. The skills-design package, product design, on the right. Shared precision industrial identity.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="surface" x1="0" y1="0" x2="1280" y2="340" gradientUnits="userSpaceOnUse"><stop stop-color="#F7F8F8"/><stop offset="1" stop-color="#EFF2F4"/></linearGradient>
|
|
6
|
+
<linearGradient id="metal" x1="0" y1="22" x2="200" y2="149" gradientUnits="userSpaceOnUse"><stop stop-color="#21394D"/><stop offset=".58" stop-color="#0C2031"/><stop offset="1" stop-color="#284156"/></linearGradient>
|
|
7
|
+
<linearGradient id="rule" gradientUnits="userSpaceOnUse" x1="400" y1="281" x2="1218" y2="281"><stop stop-color="#AEBCC6" stop-opacity=".4"/><stop offset="1" stop-color="#AEBCC6" stop-opacity=".12"/></linearGradient>
|
|
8
|
+
<clipPath id="canvas"><rect width="1280" height="340" rx="16"/></clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
<g clip-path="url(#canvas)">
|
|
11
|
+
<rect width="1280" height="340" fill="url(#surface)"/>
|
|
12
|
+
<path d="M1247 0H1280V340H1148Z" fill="#A45C2B" opacity=".04"/>
|
|
13
|
+
<g transform="translate(60 58) scale(1.12)" fill="#172634"><path d="M18 24H42L58 84L82 24H104L126 84L145 24H170L134 136H111L93 100L76 136H53Z"/><path d="M181 24H205L174 112H226L218 136H142Z"/><path d="M174 112H226L218 136H166Z" fill="#A45C2B"/></g>
|
|
14
|
+
<text x="195" y="258" text-anchor="middle" fill="#687A89" font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif" font-size="16" font-weight="500" letter-spacing="3.15">WORLD LEADING</text>
|
|
15
|
+
<path d="M352 72V278" stroke="#AEBCC6" stroke-opacity=".35"/>
|
|
16
|
+
<path d="M352 153V192" stroke="#A45C2B" stroke-opacity=".85" stroke-width="2"/>
|
|
17
|
+
<g font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif">
|
|
18
|
+
<text x="400" y="88" fill="#A45C2B" font-size="12" font-weight="600" letter-spacing="3.5">PRODUCT DESIGN</text>
|
|
19
|
+
<text x="393" y="187" font-size="90" letter-spacing="-4"><tspan fill="#687A89" font-weight="350">skills-</tspan><tspan fill="#172634" font-weight="550">design</tspan></text>
|
|
20
|
+
<text x="400" y="236" fill="#637686" font-size="20" font-weight="400" letter-spacing=".2">Requirements · Flows · Prototypes</text>
|
|
21
|
+
</g>
|
|
22
|
+
<path d="M400 281H1218" stroke="url(#rule)"/>
|
|
23
|
+
<text x="400" y="311" fill="#637686" font-family="'SFMono-Regular', Consolas, 'Liberation Mono', monospace" font-size="13" letter-spacing=".15">@agile-team/wl-skills-design</text>
|
|
24
|
+
<g transform="translate(1049 83) scale(1.68)" fill="none" stroke="#A45C2B" stroke-linecap="square" stroke-linejoin="miter">
|
|
25
|
+
<path d="M8 23V8H23M73 8H88V23M88 73V88H73M23 88H8V73" stroke-width=".8" opacity=".22"/>
|
|
26
|
+
<g stroke-width="2" opacity=".85"><path d="M17 17H39V39H17ZM57 57H79V79H57ZM57 17H79V39H57ZM17 57H39V79H17ZM39 28H57M28 39V57M68 39V57M39 68H57"/><path d="M57 28 51 24M57 28 51 32"/><path d="M68 57 64 51M68 57 72 51"/></g>
|
|
27
|
+
</g>
|
|
28
|
+
<rect x=".5" y=".5" width="1279" height="339" rx="15.5" fill="none" stroke="#AEBCC6" stroke-opacity=".2"/>
|
|
29
|
+
</g></svg>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 340" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">WL · World Leading · skills-gate</title>
|
|
3
|
+
<desc id="desc">World Leading signature on the left. The skills-gate package, quality automation, on the right. Shared precision industrial identity.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="surface" x1="0" y1="0" x2="1280" y2="340" gradientUnits="userSpaceOnUse"><stop stop-color="#0B1119"/><stop offset="1" stop-color="#111E2C"/></linearGradient>
|
|
6
|
+
<linearGradient id="metal" x1="0" y1="22" x2="200" y2="149" gradientUnits="userSpaceOnUse"><stop stop-color="#F7FAFA"/><stop offset=".58" stop-color="#B4C3CE"/><stop offset="1" stop-color="#E7EEF2"/></linearGradient>
|
|
7
|
+
<linearGradient id="rule" gradientUnits="userSpaceOnUse" x1="400" y1="281" x2="1218" y2="281"><stop stop-color="#52677C" stop-opacity=".4"/><stop offset="1" stop-color="#52677C" stop-opacity=".12"/></linearGradient>
|
|
8
|
+
<clipPath id="canvas"><rect width="1280" height="340" rx="16"/></clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
<g clip-path="url(#canvas)">
|
|
11
|
+
<rect width="1280" height="340" fill="url(#surface)"/>
|
|
12
|
+
<path d="M1247 0H1280V340H1148Z" fill="#8DDEDC" opacity=".035"/>
|
|
13
|
+
<g transform="translate(60 58) scale(1.12)" fill="url(#metal)"><path d="M18 24H42L58 84L82 24H104L126 84L145 24H170L134 136H111L93 100L76 136H53Z"/><path d="M181 24H205L174 112H226L218 136H142Z"/><path d="M174 112H226L218 136H166Z" fill="#8DDEDC"/></g>
|
|
14
|
+
<text x="195" y="258" text-anchor="middle" fill="#9CAAB8" font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif" font-size="16" font-weight="500" letter-spacing="3.15">WORLD LEADING</text>
|
|
15
|
+
<path d="M352 72V278" stroke="#52677C" stroke-opacity=".35"/>
|
|
16
|
+
<path d="M352 153V192" stroke="#8DDEDC" stroke-opacity=".85" stroke-width="2"/>
|
|
17
|
+
<g font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif">
|
|
18
|
+
<text x="400" y="88" fill="#8DDEDC" font-size="12" font-weight="600" letter-spacing="3.5">QUALITY AUTOMATION</text>
|
|
19
|
+
<text x="393" y="187" font-size="90" letter-spacing="-4"><tspan fill="#9CAAB8" font-weight="350">skills-</tspan><tspan fill="#F0F4F6" font-weight="550">gate</tspan></text>
|
|
20
|
+
<text x="400" y="236" fill="#8E9FAF" font-size="20" font-weight="400" letter-spacing=".2">Checks · Review · Release</text>
|
|
21
|
+
</g>
|
|
22
|
+
<path d="M400 281H1218" stroke="url(#rule)"/>
|
|
23
|
+
<text x="400" y="311" fill="#8E9FAF" font-family="'SFMono-Regular', Consolas, 'Liberation Mono', monospace" font-size="13" letter-spacing=".15">@agile-team/wl-skills-gate</text>
|
|
24
|
+
<g transform="translate(1049 83) scale(1.68)" fill="none" stroke="#8DDEDC" stroke-linecap="square" stroke-linejoin="miter">
|
|
25
|
+
<path d="M8 23V8H23M73 8H88V23M88 73V88H73M23 88H8V73" stroke-width=".8" opacity=".22"/>
|
|
26
|
+
<g stroke-width="2" opacity=".85"><path d="M23 76V22H73V76M16 76H31M65 76H80"/><path d="M48 39V59"/><path d="M41 22H55" stroke-width="4"/></g>
|
|
27
|
+
</g>
|
|
28
|
+
<rect x=".5" y=".5" width="1279" height="339" rx="15.5" fill="none" stroke="#52677C" stroke-opacity=".2"/>
|
|
29
|
+
</g></svg>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 340" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">WL · World Leading · skills-gate</title>
|
|
3
|
+
<desc id="desc">World Leading signature on the left. The skills-gate package, quality automation, on the right. Shared precision industrial identity.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="surface" x1="0" y1="0" x2="1280" y2="340" gradientUnits="userSpaceOnUse"><stop stop-color="#F7F8F8"/><stop offset="1" stop-color="#EFF2F4"/></linearGradient>
|
|
6
|
+
<linearGradient id="metal" x1="0" y1="22" x2="200" y2="149" gradientUnits="userSpaceOnUse"><stop stop-color="#21394D"/><stop offset=".58" stop-color="#0C2031"/><stop offset="1" stop-color="#284156"/></linearGradient>
|
|
7
|
+
<linearGradient id="rule" gradientUnits="userSpaceOnUse" x1="400" y1="281" x2="1218" y2="281"><stop stop-color="#AEBCC6" stop-opacity=".4"/><stop offset="1" stop-color="#AEBCC6" stop-opacity=".12"/></linearGradient>
|
|
8
|
+
<clipPath id="canvas"><rect width="1280" height="340" rx="16"/></clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
<g clip-path="url(#canvas)">
|
|
11
|
+
<rect width="1280" height="340" fill="url(#surface)"/>
|
|
12
|
+
<path d="M1247 0H1280V340H1148Z" fill="#087A7D" opacity=".04"/>
|
|
13
|
+
<g transform="translate(60 58) scale(1.12)" fill="#172634"><path d="M18 24H42L58 84L82 24H104L126 84L145 24H170L134 136H111L93 100L76 136H53Z"/><path d="M181 24H205L174 112H226L218 136H142Z"/><path d="M174 112H226L218 136H166Z" fill="#087A7D"/></g>
|
|
14
|
+
<text x="195" y="258" text-anchor="middle" fill="#687A89" font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif" font-size="16" font-weight="500" letter-spacing="3.15">WORLD LEADING</text>
|
|
15
|
+
<path d="M352 72V278" stroke="#AEBCC6" stroke-opacity=".35"/>
|
|
16
|
+
<path d="M352 153V192" stroke="#087A7D" stroke-opacity=".85" stroke-width="2"/>
|
|
17
|
+
<g font-family="'Helvetica Neue', Inter, Helvetica, Arial, sans-serif">
|
|
18
|
+
<text x="400" y="88" fill="#087A7D" font-size="12" font-weight="600" letter-spacing="3.5">QUALITY AUTOMATION</text>
|
|
19
|
+
<text x="393" y="187" font-size="90" letter-spacing="-4"><tspan fill="#687A89" font-weight="350">skills-</tspan><tspan fill="#172634" font-weight="550">gate</tspan></text>
|
|
20
|
+
<text x="400" y="236" fill="#637686" font-size="20" font-weight="400" letter-spacing=".2">Checks · Review · Release</text>
|
|
21
|
+
</g>
|
|
22
|
+
<path d="M400 281H1218" stroke="url(#rule)"/>
|
|
23
|
+
<text x="400" y="311" fill="#637686" font-family="'SFMono-Regular', Consolas, 'Liberation Mono', monospace" font-size="13" letter-spacing=".15">@agile-team/wl-skills-gate</text>
|
|
24
|
+
<g transform="translate(1049 83) scale(1.68)" fill="none" stroke="#087A7D" stroke-linecap="square" stroke-linejoin="miter">
|
|
25
|
+
<path d="M8 23V8H23M73 8H88V23M88 73V88H73M23 88H8V73" stroke-width=".8" opacity=".22"/>
|
|
26
|
+
<g stroke-width="2" opacity=".85"><path d="M23 76V22H73V76M16 76H31M65 76H80"/><path d="M48 39V59"/><path d="M41 22H55" stroke-width="4"/></g>
|
|
27
|
+
</g>
|
|
28
|
+
<rect x=".5" y=".5" width="1279" height="339" rx="15.5" fill="none" stroke="#AEBCC6" stroke-opacity=".2"/>
|
|
29
|
+
</g></svg>
|