2026-08-05 21:50:44 +08:00
import { fileURLToPath } from 'node:url'
import { describe , expect , it } from 'vitest'
import { LOADER_SMOKE_TEST_TIMEOUT_MS , runLoaderSmoke } from '@deepseek-ai/dsh-loader-smoke'
const binScript = fileURLToPath ( new URL ( './fixtures/dsh-badge/snapshot.ts' , import . meta . url ) )
const configPath = fileURLToPath ( new URL ( './fixtures/dsh-badge/cordis.yml' , import . meta . url ) )
const defaultConfigPath = fileURLToPath ( new URL ( './fixtures/dsh-badge/default.cordis.yml' , import . meta . url ) )
const tsconfigPath = fileURLToPath ( new URL ( '../../../tsconfig.json' , import . meta . url ) )
const badgeAssetsPath = fileURLToPath ( new URL ( '../../../packages/skill/skill-badge/assets/' , import . meta . url ) )
describe ( 'dsh badge assembled snapshot' , ( ) = > {
it ( 'advertises and loads the opt-in bundled skill through the shipped app' , async ( ) = > {
const disabled = await runLoaderSmoke ( {
label : 'disabled dsh badge skill snapshot' ,
tempDirPrefix : 'headless-snapshot-dsh-badge-disabled-' ,
binScript ,
libBinScript : binScript ,
configPath : defaultConfigPath ,
tsconfigPath ,
} )
const enabled = await runLoaderSmoke ( {
label : 'dsh badge skill snapshot' ,
tempDirPrefix : 'headless-snapshot-dsh-badge-' ,
binScript ,
libBinScript : binScript ,
configPath ,
tsconfigPath ,
} )
const disabledSnapshot = JSON . parse ( disabled . stdout ) as unknown
const enabledSnapshot = JSON . parse (
enabled . stdout . replaceAll ( badgeAssetsPath , '{{badgeAssetsPath}}' ) ,
) as unknown
expect ( disabled . stderr ) . toBe ( '' )
expect ( enabled . stderr ) . toBe ( '' )
expect ( disabledSnapshot ) . toMatchInlineSnapshot ( `
{
2026-08-06 18:54:53 +08:00
"catalog" : null ,
2026-08-05 21:50:44 +08:00
"result" : {
"content" : [
{
"text" : "Error: skill " dsh - badge " is unknown or no longer available" ,
"type" : "text" ,
} ,
] ,
"error" : {
"message" : "skill " dsh - badge " is unknown or no longer available" ,
} ,
"isError" : true ,
} ,
2026-08-06 18:54:53 +08:00
"summary" : null ,
2026-08-05 21:50:44 +08:00
}
` )
expect ( enabledSnapshot ) . toMatchInlineSnapshot ( `
{
"catalog" : [
{
"text" : " < system - reminder >
A skill is a reusable set of task - specific instructions . The following skills are available in this session :
< available_skills >
- \ ` dsh-badge \` : Add the official “powered by dsh” badge to documents, pull requests, merge requests, and other content produced with DeepSeek Harness. Use whenever creating a pull request or merge request. Also use when the user asks for a dsh badge, powered-by-dsh attribution, or a reusable dsh badge asset or snippet.
< / available_skills >
If the user names a skill , or the task clearly matches a skill 's description, call the \`skill\` tool with the exact skill name before taking task actions. Load all applicable skills, then follow their full instructions. This catalog contains summaries only; do not infer or follow a skill' s instructions until it has been loaded .
2026-08-08 15:39:19 +08:00
A user may also invoke a skill directly ; its < skill_content > block then appears in this conversation . Follow it , and do not call the \ ` skill \` tool again for that skill.
2026-08-05 21:50:44 +08:00
< / s y s t e m - r e m i n d e r > " ,
"type" : "text" ,
} ,
] ,
"result" : {
"content" : [
{
"text" : "<skill_content name=" dsh - badge " >
< skill_resources >
Base directory for this skill : { { badgeAssetsPath } }
Resolve relative paths mentioned by this skill against the base directory before using them . Load referenced resources only as needed .
< / skill_resources >
< skill_instructions >
# dsh Badge
Add the official “ powered by dsh ” badge without recreating or restyling it .
# # Assets
- Local PNG : [ \ ` dsh-badge.png \` ](dsh-badge.png), 726× 120 source image; render at 121× 20
- Shields . io image URL : \ ` https://img.shields.io/badge/powered_by-dsh-4D6BFE?style=flat-square&logo=deepseek&logoColor=white \`
2026-08-10 21:36:20 +08:00
- Project URL : \ ` https://github.com/deepseek-ai/deepseek-harness \`
2026-08-05 21:50:44 +08:00
# # Markdown
Use this linked badge in Markdown :
\ ` \` \` markdown
2026-08-10 21:36:20 +08:00
[ ! [ ] ( https : //img.shields.io/badge/powered_by-dsh-4D6BFE?style=flat-square&logo=deepseek&logoColor=white)](https://github.com/deepseek-ai/deepseek-harness)
2026-08-05 21:50:44 +08:00
\ ` \` \`
If attribution should not be linked , use :
\ ` \` \` markdown
! [ ] ( https : //img.shields.io/badge/powered_by-dsh-4D6BFE?style=flat-square&logo=deepseek&logoColor=white)
\ ` \` \`
# # Usage rules
- For GitHub or GitLab Markdown , use the Shields . io URL and link it to the project URL unless the user asks for an unlinked image .
- For Feishu and other systems that import remote images unreliably , upload \ ` dsh-badge.png \` from this skill directory instead of generating another badge.
- Preserve the badge ' s 121 × 20 dimensions and aspect ratio .
- Place the badge at the end of the attributed document or section unless the user specifies another position .
- Do not substitute another color , logo , label , or project URL .
< / skill_instructions >
< / skill_content > " ,
"type" : "text" ,
} ,
] ,
"isError" : false ,
"value" : {
"content" : " # dsh Badge
Add the official “ powered by dsh ” badge without recreating or restyling it .
# # Assets
- Local PNG : [ \ ` dsh-badge.png \` ](dsh-badge.png), 726× 120 source image; render at 121× 20
- Shields . io image URL : \ ` https://img.shields.io/badge/powered_by-dsh-4D6BFE?style=flat-square&logo=deepseek&logoColor=white \`
2026-08-10 21:36:20 +08:00
- Project URL : \ ` https://github.com/deepseek-ai/deepseek-harness \`
2026-08-05 21:50:44 +08:00
# # Markdown
Use this linked badge in Markdown :
\ ` \` \` markdown
2026-08-10 21:36:20 +08:00
[ ! [ ] ( https : //img.shields.io/badge/powered_by-dsh-4D6BFE?style=flat-square&logo=deepseek&logoColor=white)](https://github.com/deepseek-ai/deepseek-harness)
2026-08-05 21:50:44 +08:00
\ ` \` \`
If attribution should not be linked , use :
\ ` \` \` markdown
! [ ] ( https : //img.shields.io/badge/powered_by-dsh-4D6BFE?style=flat-square&logo=deepseek&logoColor=white)
\ ` \` \`
# # Usage rules
- For GitHub or GitLab Markdown , use the Shields . io URL and link it to the project URL unless the user asks for an unlinked image .
- For Feishu and other systems that import remote images unreliably , upload \ ` dsh-badge.png \` from this skill directory instead of generating another badge.
- Preserve the badge ' s 121 × 20 dimensions and aspect ratio .
- Place the badge at the end of the attributed document or section unless the user specifies another position .
- Do not substitute another color , logo , label , or project URL .
" ,
"name" : "dsh-badge" ,
"provider" : "dsh-badge" ,
"resourceBase" : {
"kind" : "directory" ,
"path" : "{{badgeAssetsPath}}" ,
} ,
} ,
} ,
"summary" : {
"description" : "Add the official “powered by dsh” badge to documents, pull requests, merge requests, and other content produced with DeepSeek Harness. Use whenever creating a pull request or merge request. Also use when the user asks for a dsh badge, powered-by-dsh attribution, or a reusable dsh badge asset or snippet." ,
"invocation" : {
"modelInvocable" : true ,
"userInvocable" : true ,
} ,
"name" : "dsh-badge" ,
"provider" : "dsh-badge" ,
"resourceBase" : {
"kind" : "directory" ,
"path" : "{{badgeAssetsPath}}" ,
} ,
"source" : "bundled" ,
} ,
}
` )
2026-08-06 18:54:53 +08:00
} , LOADER_SMOKE_TEST_TIMEOUT_MS * 2 )
2026-08-05 21:50:44 +08:00
} )