Skip to content

Commit a16738c

Browse files
committed
fix(validation): resolve manifest URL failures
1 parent ebcce31 commit a16738c

24 files changed

Lines changed: 157 additions & 130 deletions

.github/workflows/scheduled-checks.yml

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,20 @@ jobs:
2929

3030
- name: Validate URLs
3131
id: validate
32-
run: npm run test:urls
32+
run: npm run test:urls 2>&1 | tee url-validation.log
3333
continue-on-error: true
34+
env:
35+
NO_COLOR: '1'
3436

3537
- name: Create issue if URLs are broken
3638
if: steps.validate.outcome == 'failure'
3739
uses: actions/github-script@v8
3840
with:
3941
script: |
42+
const fs = require('node:fs');
4043
const title = '🔗 Broken URLs detected in manifests';
44+
const output = fs.readFileSync('url-validation.log', 'utf8');
45+
const excerpt = output.slice(-6000);
4146
const body = `## Scheduled URL Validation Failed
4247
4348
The weekly URL validation check has detected broken or inaccessible URLs in the manifest files.
@@ -49,8 +54,10 @@ jobs:
4954
- Update or remove broken URLs
5055
- Consider if these tools/services have been discontinued
5156
52-
### Affected Files
53-
Check the workflow logs for specific files and URLs that failed validation.
57+
### Validation Output
58+
\`\`\`text
59+
${excerpt}
60+
\`\`\`
5461
5562
---
5663
*This issue was automatically created by the scheduled URL validation workflow.*`;
@@ -80,6 +87,35 @@ jobs:
8087
});
8188
}
8289
90+
- name: Close resolved URL validation issues
91+
if: steps.validate.outcome == 'success'
92+
uses: actions/github-script@v8
93+
with:
94+
script: |
95+
const issues = await github.paginate(github.rest.issues.listForRepo, {
96+
owner: context.repo.owner,
97+
repo: context.repo.repo,
98+
state: 'open',
99+
labels: 'automated,url-validation',
100+
per_page: 100
101+
});
102+
103+
for (const issue of issues) {
104+
await github.rest.issues.createComment({
105+
owner: context.repo.owner,
106+
repo: context.repo.repo,
107+
issue_number: issue.number,
108+
body: `URL validation passed in ${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}. Closing this automated maintenance issue.`
109+
});
110+
await github.rest.issues.update({
111+
owner: context.repo.owner,
112+
repo: context.repo.repo,
113+
issue_number: issue.number,
114+
state: 'closed',
115+
state_reason: 'completed'
116+
});
117+
}
118+
83119
- name: Fail workflow after reporting broken URLs
84120
if: steps.validate.outcome == 'failure'
85121
run: exit 1

manifests/clis/amazon-q-developer-cli.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
}
4040
},
4141
"verified": false,
42-
"websiteUrl": "https://aws.amazon.com/q/developer/",
42+
"websiteUrl": "https://aws.amazon.com/q/developer",
4343
"docsUrl": "https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line.html",
4444
"vendor": "AWS",
4545
"latestVersion": "v1.18.1",

manifests/clis/deepv-code.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
}
4040
},
4141
"verified": false,
42-
"websiteUrl": "https://dvcode.deepvlab.ai/",
43-
"docsUrl": "https://deepvcode.com/guides/",
42+
"websiteUrl": "https://dvcode.deepvlab.ai",
43+
"docsUrl": "https://deepvcode.com/guides",
4444
"vendor": "OrionStar",
4545
"latestVersion": "0.1.0",
4646
"githubUrl": "https://github.com/OrionStarAI/DeepVCode",

manifests/clis/droid-cli.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
"download": "https://app.factory.ai/cli",
7373
"changelog": null,
7474
"pricing": "https://docs.factory.ai/pricing",
75-
"mcp": "https://docs.factory.ai/cli/configuration/model-context-protocol",
75+
"mcp": "https://docs.factory.ai/cli/configuration/mcp",
7676
"issue": null
7777
},
7878
"communityUrls": {

manifests/clis/qoder-cli.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
},
4141
"verified": false,
4242
"websiteUrl": "https://qoder.com/cli",
43-
"docsUrl": "https://docs.qoder.com/cli/quick-start",
43+
"docsUrl": "https://docs.qoder.com/en/cli/quick-start",
4444
"vendor": "Alibaba",
4545
"latestVersion": "Latest",
4646
"githubUrl": null,

manifests/collections.json

Lines changed: 1 addition & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,7 +1078,7 @@
10781078
}
10791079
},
10801080
"name": "Building with Claude Code",
1081-
"url": "https://www.anthropic.com/news/claude-code",
1081+
"url": "https://www.anthropic.com/news/claude-3-7-sonnet",
10821082
"description": "Introduction to Claude Code and its capabilities"
10831083
},
10841084
{
@@ -1233,61 +1233,6 @@
12331233
"name": "AI-Native Development",
12341234
"url": "https://lovable.dev/blog",
12351235
"description": "Building applications designed for AI-first workflows"
1236-
},
1237-
{
1238-
"translations": {
1239-
"en": {
1240-
"name": "The Coding Copilot Pattern",
1241-
"description": "Common patterns for effective AI pair programming"
1242-
},
1243-
"de": {
1244-
"name": "Das Coding-Copilot-Muster",
1245-
"description": "Gemeinsame Muster für effektives KI-Pair-Programming"
1246-
},
1247-
"es": {
1248-
"name": "El Patrón de Copiloto de Codificación",
1249-
"description": "Patrones comunes para programación en pareja IA efectiva"
1250-
},
1251-
"fr": {
1252-
"name": "Le Pattern Copilote de Codage",
1253-
"description": "Motifs courants pour la programmation en paire IA efficace"
1254-
},
1255-
"id": {
1256-
"name": "Pola Coding Copilot",
1257-
"description": "Pola umum untuk pair programming AI yang efektif"
1258-
},
1259-
"ja": {
1260-
"name": "コーディングコパイロットパターン",
1261-
"description": "効果的なAIペアプログラミングのための一般的なパターン"
1262-
},
1263-
"ko": {
1264-
"name": "코딩 코파일럿 패턴",
1265-
"description": "효과적인 AI 페어 프로그래밍을 위한 일반적인 패턴"
1266-
},
1267-
"pt": {
1268-
"name": "O Padrão Copiloto de Codificação",
1269-
"description": "Padrões comuns para programação em par AI eficaz"
1270-
},
1271-
"ru": {
1272-
"name": "Паттерн coding-копилота",
1273-
"description": "Общие паттерны для эффективной pair-программирования с ИИ"
1274-
},
1275-
"tr": {
1276-
"name": "Kodlama Copilot Pattern",
1277-
"description": "Etkili AI pair programming için yaygın patternlar"
1278-
},
1279-
"zh-Hans": {
1280-
"name": "编码副驾驶模式",
1281-
"description": "有效 AI 结对编程的常见模式"
1282-
},
1283-
"zh-Hant": {
1284-
"name": "編碼副駕駛員模式",
1285-
"description": "有效 AI 結對編程的常見模式"
1286-
}
1287-
},
1288-
"name": "The Coding Copilot Pattern",
1289-
"url": "https://lovable.dev/patterns",
1290-
"description": "Common patterns for effective AI pair programming"
12911236
}
12921237
]
12931238
}

manifests/extensions/gemini-code-assist.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
"lastVerifiedAt": "2026-07-19",
6565
"verifiedBy": "codex-agent",
6666
"confidence": "medium",
67-
"websiteUrl": "https://codeassist.google/",
67+
"websiteUrl": "https://codeassist.google",
6868
"docsUrl": "https://docs.cloud.google.com/gemini/docs/codeassist/overview",
6969
"vendor": "Google",
7070
"latestVersion": "VS Code 2.87.0 / JetBrains 1.54.1",
@@ -114,7 +114,7 @@
114114
"youtube": "https://www.youtube.com/@GoogleDevelopers",
115115
"discord": null,
116116
"reddit": null,
117-
"blog": "https://developers.google.com/code-assist/blog"
117+
"blog": null
118118
},
119119
"relatedProducts": [],
120120
"supportedIdes": [

manifests/ides/air.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
}
4040
},
4141
"verified": false,
42-
"websiteUrl": "https://air.dev/",
43-
"docsUrl": "https://www.jetbrains.com/help/air/",
42+
"websiteUrl": "https://air.dev",
43+
"docsUrl": "https://www.jetbrains.com/help/air",
4444
"vendor": "JetBrains",
4545
"latestVersion": "Preview",
4646
"githubUrl": null,
@@ -55,7 +55,7 @@
5555
}
5656
],
5757
"resourceUrls": {
58-
"download": "https://air.dev/",
58+
"download": "https://air.dev",
5959
"changelog": null,
6060
"pricing": null,
6161
"mcp": null,

manifests/models/gemini-3-1-pro-preview.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
"fields": ["tokenPricing"]
6060
},
6161
{
62-
"url": "https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-pro/",
62+
"url": "https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-pro",
6363
"title": "Gemini 3.1 Pro: A smarter model for your most complex tasks",
6464
"fields": ["name", "description", "releaseDate", "lifecycle"]
6565
}

manifests/models/gemini-3-flash.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
]
5757
},
5858
{
59-
"url": "https://blog.google/products-and-platforms/products/gemini/gemini-3-flash/",
59+
"url": "https://blog.google/products-and-platforms/products/gemini/gemini-3-flash",
6060
"title": "Introducing Gemini 3 Flash",
6161
"fields": ["name", "description", "releaseDate"]
6262
}

0 commit comments

Comments
 (0)