openlark-api-validation
npx skills add https://github.com/foxzool/open-lark --skill openlark-api-validation
Agent 安装分布
Skill 文档
OpenLark API è¦ççéªè¯æè½
ð§ æè½è·¯ç±æå
æ¬æè½éç¨åºæ¯ï¼
- éè¦ç»è®¡æä¸ª crate/bizTag ç API è¦çç
- éè¦è¾åºç¼ºå¤± API æ¸ åä¸å®æçæ¥å
- éè¦å¯¹æ¯
api_list_export.csvä¸å®é è½çå®ç°
å ¶ä»æè½ï¼
- 项ç®çº§è§è使£ï¼æ¶æ/API/导åº/æ ¡éªä¸ä½ï¼â
Skill(openlark-code-standards) - æ°å¢/éæå
·ä½ API â
Skill(openlark-api) - å®¡æ¥æ´ä½æ¶æä¸å
Œ
± API æ¶æ â
Skill(openlark-design-review)
å ³é®è¯è§¦åæ å°
- è¦ççã缺失 APIãå®ç°æ°éãCSV 对æ¯ãéªè¯èæ¬ãæ¥å â
openlark-api-validation - æ°å¢ APIãéæ APIãBuilderãRequest/Responseãmod.rs å¯¼åº â
openlark-api - 代ç è§èãè§èæ£æ¥ã飿 ¼ä¸è´æ§ã使£ â
openlark-code-standards - æ¶æè®¾è®¡ãpublic APIãæ¶ææ¹æ¡ãfeature gatingãå
¼å®¹çç¥ â
openlark-design-review - validateãå¿
å¡«æ ¡éªãvalidate_requiredã空ç½åç¬¦ä¸²ãæ ¡éªèå â
openlark-validation-style
åå跳转è§å
- è¥åç°ç¼ºå¤± API çæ ¹å æ¯æ¶æåå±/è弿··ä¹±ï¼è½¬
openlark-design-reviewã - è¥åç°é®é¢æ¯å
·ä½ API å°æªå®ç°ï¼è½¬
openlark-apiè½å°å®ç°ã - è¥éè¦æè¦ççé®é¢å½å å°å
¨ä»è§èä¸è´æ§ï¼è½¬
openlark-code-standardsã
ð¯ æè½ç¨é
æ¬æè½ç¨äºéªè¯ OpenLark 项ç®ä¸å crate ç API å®ç°è¦ççï¼éè¿å¯¹æ¯ api_list_export.csv ä¸ç API å®ä¹ä¸å®é
代ç å®ç°ï¼çæè¯¦ç»çè¦ççæ¥åã
ð å¿«é工使µ
1. éªè¯å个 crate ç API è¦çç
# éªè¯ openlark-docs crate
python3 tools/validate_apis.py --crate openlark-docs
# éªè¯ openlark-communication crate
python3 tools/validate_apis.py --crate openlark-communication
# éªè¯ openlark-meeting crate
python3 tools/validate_apis.py --crate openlark-meeting
è¾åºä½ç½®ï¼ reports/api_validation/{crate}.md
2. ååºææå¯ç¨ç crate æ å°
# æ¥çææ crate â bizTag æ å°
python3 tools/validate_apis.py --list-crates
示ä¾è¾åºï¼
ð æ å°æä»¶: tools/api_coverage.toml
- openlark-analytics: src=crates/openlark-analytics/src biz_tags=[search, report]
- openlark-api: src=crates/openlark-api/src biz_tags=[auth, passport]
- openlark-application: src=crates/openlark-application/src biz_tags=[application]
...
3. èªå®ä¹éªè¯èå´
# æå®æºç ç®å½åä¸å¡æ ç¾
python3 tools/validate_apis.py \
--csv api_list_export.csv \
--src crates/openlark-docs/src \
--filter ccm base baike \
--output custom_report.md
# å
嫿§çæ¬ API
python3 tools/validate_apis.py --crate openlark-docs --include-old
4. éªè¯ææ cratesï¼æ¹éï¼
# éªè¯ææ crate å¹¶çææ¥å
for crate in openlark-docs openlark-communication openlark-meeting openlark-hr; do
echo "éªè¯ $crate..."
python3 tools/validate_apis.py --crate $crate
done
ð æ¥å解读
æ¥åç»æ
çæç Markdown æ¥åå å«ä»¥ä¸é¨åï¼
ä¸ãæ»ä½ç»è®¡
- API æ»æ°ï¼CSV ä¸å®ä¹ç API æ°é
- å·²å®ç°ï¼å·²å®ç°ç API æ°é
- æªå®ç°ï¼ç¼ºå¤±ç API æ°é
- 宿çï¼å®ç°ç¾åæ¯
- é¢å¤æä»¶ï¼ä»£ç ä¸åå¨ä½ CSV 䏿ªå®ä¹çæä»¶
äºã模åç»è®¡
æ bizTag åç»çç»è®¡ä¿¡æ¯ï¼å±ç¤ºåä¸å¡åç宿çã
ä¸ãæªå®ç°ç API
详ç»ååºæææªå®ç°ç APIï¼å æ¬ï¼
- API ID
- 颿æä»¶è·¯å¾
- API URL
- ææ¡£é¾æ¥
åãé¢å¤çå®ç°æä»¶
ååºä¸å¹é CSV å®ä¹çé¢å¤æä»¶ï¼å¯è½æ¯è¾ 婿件æéè¦æ´æ° CSVï¼ã
äºãå·²å®ç°ç API
ææ¨¡ååç»ååºææå·²å®ç°ç APIã
ç¤ºä¾æ¥åçæ®µ
## ä¸ãæ»ä½ç»è®¡
| ææ | æ°é |
|------|------|
| **API æ»æ°** | 254 |
| **å·²å®ç°** | 240 |
| **æªå®ç°** | 14 |
| **宿ç** | 94.5% |
| **é¢å¤æä»¶** | 3 |
## äºã模åç»è®¡
| 模å | API æ°é | å·²å®ç° | æªå®ç° | 宿ç |
|------|---------|--------|--------|--------|
| BASE | 49 | 48 | 1 | 98.0% |
| BAIKE | 27 | 27 | 0 | 100.0% |
| CCM | 174 | 160 | 14 | 92.0% |
| MINUTES | 4 | 4 | 0 | 100.0% |
ð§ é ç½®æä»¶
tools/api_coverage.toml
å®ä¹ crate â bizTag æ å°å ³ç³»ï¼ç¨äºèªå¨è¡¥å ¨éªè¯åæ°ã
æ ¼å¼ï¼
[crates.{crate_name}]
src = "crates/{crate_name}/src"
biz_tags = ["bizTag1", "bizTag2", ...]
æ·»å æ° crate æ å°ï¼
- ç¼è¾
tools/api_coverage.toml - å¨
[crates]䏿·»å æ°æ¡ç® - è¿è¡
--list-crateséªè¯é ç½®
ð¨ 常è§é®é¢
1. CSV æä»¶ä¸åå¨
éè¯¯ï¼ â é误: CSV æä»¶ä¸åå¨: api_list_export.csv
è§£å³ï¼
- ç¡®ä¿
api_list_export.csvå¨é¡¹ç®æ ¹ç®å½ - æä½¿ç¨
--csvåæ°æå®è·¯å¾
2. æºç ç®å½ä¸åå¨
éè¯¯ï¼ â é误: æºç ç®å½ä¸åå¨: crates/xxx/src
è§£å³ï¼
- æ£æ¥ crate åç§°æ¯å¦æ£ç¡®ï¼ä½¿ç¨
--list-cratesæ¥çï¼ - æä½¿ç¨
--srcåæ°æå¨æå®è·¯å¾
3. 宿çå¼å¸¸
ç°è±¡ï¼ 宿çè¶ è¿ 100% ææå¤§é”é¢å¤æä»¶”
å¯è½åå ï¼
- å½åè§èä¸å¹é ï¼æä»¶å½åä¸ CSV å®ä¹ä¸ä¸è´ï¼
- åå¨è¾ 婿件ï¼service.rsãmodels.rs çï¼
- CSV å®ä¹è¿æ¶
è§£å³ï¼
- æ£æ¥å½åè§èï¼
src/{bizTag}/{project}/{version}/{resource}/{name}.rs - æ´æ° CSV æä»¶
- æ£æ¥æ¯å¦éè¦æ´æ°
tools/api_coverage.tomlæ å°
ð å½åè§è
API æä»¶è·¯å¾ä¸¥æ ¼éµå¾ªä»¥ä¸è§èï¼
src/{bizTag}/{project}/{version}/{resource}/{name}.rs
è§åï¼
meta.resourceä¸ç.转æ¢ä¸º/ä½ä¸ºåç®å½meta.nameä¸ç/转æ¢ä¸º/ä½ä¸ºåç®å½meta.nameä¸ç:æ¿æ¢ä¸º_ï¼è·¯å¾åæ°ï¼- ä½¿ç¨ snake_case å½å
示ä¾ï¼
| API | æä»¶è·¯å¾ |
|---|---|
bizTag=ccm, project=drive, version=v1, resource=file, name=create |
src/ccm/drive/v1/file/create.rs |
bizTag=base, project=bitable, version=v1, resource=app.table, name=record/create |
src/base/bitable/v1/app/table/record/create.rs |
ð ç¸å ³æè½
- æ·»å æ° APIï¼
Skill(openlark-api) - 设计审æ¥ï¼
Skill(openlark-design-review) - æ ¡éªé£æ ¼ï¼
Skill(openlark-validation-style)
ð 工使µéæ
CI/CD éæ
å¨ CI 䏿·»å API è¦ççæ£æ¥ï¼
# .github/workflows/api-validation.yml
name: API Validation
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Validate API Coverage
run: |
python3 tools/validate_apis.py --crate openlark-docs
python3 tools/validate_apis.py --crate openlark-communication
Pre-commit Hook
# .git/hooks/pre-commit
#!/bin/bash
python3 tools/validate_apis.py --crate openlark-docs --output reports/api_validation/pre-commit.md
ð æä½³å®è·µ
- 宿éªè¯ï¼æ¯æ¬¡æ·»å æ° API åè¿è¡éªè¯
- ä¿æåæ¥ï¼ç¡®ä¿ CSV æä»¶ä¸é£ä¹¦å®æ¹ææ¡£åæ¥
- æ´æ°æ å°ï¼æ·»å æ° crate æ¶åæ¶æ´æ°
api_coverage.toml - å®¡æ¥æ¥åï¼å ³æ³¨”é¢å¤æä»¶”ï¼å¯è½éè¦æ´æ° CSV æéæä»£ç
- 100% ç®æ ï¼ç¡®ä¿æ ¸å¿ API å®ç°çè¾¾å° 100%