MWPW-198143: add mas-author skill for safe M@S authoring via Odin MCP#1024
Conversation
- SKILL.md: stop rule, allow/deny lists, and guardrail workflows (publish, placeholder+index, safe delete, en_US tags, one-variation-per-locale) for driving the Odin MCP. - references/content-model.md: M@S content-fragment model IDs, reference fields, path/locale grammar, and variation rules. No code references.
|
Hello, I'm the AEM Code Sync Bot and I will run some actions to deploy your branch.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1024 +/- ##
=======================================
Coverage 89.86% 89.86%
=======================================
Files 298 298
Lines 94939 94939
=======================================
+ Hits 85317 85318 +1
+ Misses 9622 9621 -1 see 9 files with indirect coverage changes Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
| @@ -1,4 +1,6 @@ | |||
| .* | |||
| !.claude/skills/mas-author/SKILL.md | |||
| !.claude/skills/mas-author/references/content-model.md | |||
There was a problem hiding this comment.
If we want to exclude both files from being ignored, I think we should move them after the last line, because right now line 4 (*.md) cancels out both exclude rules.
|
Strong skill — docs-only, allow/deny/stop structure is right, and the Two things before merge:
|
|
@Axelcureno I don't see |
Andrei4226
left a comment
There was a problem hiding this comment.
LGTM
Nit: the one-variation-per-locale rule documented here doesn't cover geo-scoped promo variations (multiple pznTags-scoped variations can exist per locale under the same promo project)
Clarify the rule bounds locale variations only; geo-scoped promo variants (pznTags-scoped siblings) can legitimately share a locale under one promo project. Addresses PR review nit.
|
Thanks @Andrei4226 incorporated your latest comment. |
| ### acom, acom-cc, acom-dc, nala, sandbox | ||
| | Language | Default locale | Regional variation locales | | ||
| |---|---|---| | ||
| | Arabic (`ar`) | `ar_SA` | `ar_DZ`, `ar_EG`, `ar_KW`, `ar_QA`, `ar_AE` | | ||
| | Bulgarian (`bg`) | `bg_BG` | — (default only) | | ||
| | Czech (`cs`) | `cs_CZ` | — (default only) | | ||
| | Danish (`da`) | `da_DK` | — (default only) | | ||
| | German (`de`) | `de_DE` | `de_AT`, `de_LU`, `de_CH` | | ||
| | Greek (`el`) | `el_GR` | — (default only) | | ||
| | English (`en`) | `en_US` | `en_DZ`, `en_BE`, `en_CA`, `en_EG`, `en_GR`, `en_HK`, `en_ID`, `en_IE`, `en_IL`, `en_KW`, `en_LU`, `en_MY`, `en_MU`, `en_NZ`, `en_NG`, `en_PH`, `en_QA`, `en_SA`, `en_SG`, `en_ZA`, `en_TH`, `en_TM`, `en_AE`, `en_VN` | | ||
| | English (`en`) | `en_GB` | `en_AU`, `en_IN` | | ||
| | Estonian (`et`) | `et_EE` | — (default only) | | ||
| | Finnish (`fi`) | `fi_FI` | — (default only) | | ||
| | Filipino (`fil`) | `fil_PH` | — (default only) | | ||
| | French (`fr`) | `fr_FR` | `fr_BE`, `fr_CA`, `fr_LU`, `fr_CH` | | ||
| | Hebrew (`he`) | `he_IL` | — (default only) | | ||
| | Hindi (`hi`) | `hi_IN` | — (default only) | | ||
| | Hungarian (`hu`) | `hu_HU` | — (default only) | | ||
| | Indonesian (`id`) | `id_ID` | — (default only) | | ||
| | Italian (`it`) | `it_IT` | `it_CH` | | ||
| | Japanese (`ja`) | `ja_JP` | — (default only) | | ||
| | Korean (`ko`) | `ko_KR` | — (default only) | | ||
| | Lithuanian (`lt`) | `lt_LT` | — (default only) | | ||
| | Latvian (`lv`) | `lv_LV` | — (default only) | | ||
| | Malay (`ms`) | `ms_MY` | — (default only) | | ||
| | Norwegian Bokmål (`nb`) | `nb_NO` | — (default only) | | ||
| | Dutch (`nl`) | `nl_NL` | `nl_BE` | | ||
| | Polish (`pl`) | `pl_PL` | — (default only) | | ||
| | Portuguese (`pt`) | `pt_BR` | — (default only) | | ||
| | Portuguese (`pt`) | `pt_PT` | — (default only) | | ||
| | Romanian (`ro`) | `ro_RO` | — (default only) | | ||
| | Russian (`ru`) | `ru_RU` | `ru_TM` | | ||
| | Slovak (`sk`) | `sk_SK` | — (default only) | | ||
| | Slovenian (`sl`) | `sl_SI` | — (default only) | | ||
| | Spanish (`es`) | `es_ES` | `es_AR`, `es_CL`, `es_CO`, `es_CR`, `es_DO`, `es_EC`, `es_GT`, `es_MX`, `es_PE`, `es_PR` | | ||
| | Swedish (`sv`) | `sv_SE` | — (default only) | | ||
| | Thai (`th`) | `th_TH` | — (default only) | | ||
| | Turkish (`tr`) | `tr_TR` | — (default only) | | ||
| | Ukrainian (`uk`) | `uk_UA` | — (default only) | | ||
| | Vietnamese (`vi`) | `vi_VN` | — (default only) | | ||
| | Chinese (`zh`) | `zh_CN` | — (default only) | | ||
| | Chinese (`zh`) | `zh_TW` | `zh_HK` | | ||
|
|
||
| ### ccd | ||
| | Language | Default locale | Regional variation locales | | ||
| |---|---|---| | ||
| | Czech (`cs`) | `cs_CZ` | — (default only) | | ||
| | Danish (`da`) | `da_DK` | — (default only) | | ||
| | German (`de`) | `de_DE` | `de_AT`, `de_LU`, `de_CH` | | ||
| | English (`en`) | `en_US` | `en_AU`, `en_BE`, `en_CA`, `en_EG`, `en_GR`, `en_HK`, `en_IN`, `en_ID`, `en_IE`, `en_IL`, `en_KW`, `en_LU`, `en_MY`, `en_NZ`, `en_NG`, `en_PH`, `en_QA`, `en_SA`, `en_SG`, `en_ZA`, `en_TH`, `en_AE`, `en_VN` | | ||
| | Finnish (`fi`) | `fi_FI` | — (default only) | | ||
| | French (`fr`) | `fr_FR` | `fr_BE`, `fr_CA`, `fr_LU`, `fr_CH` | | ||
| | Hindi (`hi`) | `hi_IN` | — (default only) | | ||
| | Hungarian (`hu`) | `hu_HU` | — (default only) | | ||
| | Indonesian (`id`) | `id_ID` | — (default only) | | ||
| | Italian (`it`) | `it_IT` | `it_CH` | | ||
| | Japanese (`ja`) | `ja_JP` | — (default only) | | ||
| | Korean (`ko`) | `ko_KR` | — (default only) | | ||
| | Norwegian Bokmål (`nb`) | `nb_NO` | — (default only) | | ||
| | Dutch (`nl`) | `nl_NL` | `nl_BE` | | ||
| | Polish (`pl`) | `pl_PL` | — (default only) | | ||
| | Portuguese (`pt`) | `pt_BR` | — (default only) | | ||
| | Russian (`ru`) | `ru_RU` | — (default only) | | ||
| | Spanish (`es`) | `es_ES` | `es_AR`, `es_CL`, `es_CO`, `es_CR`, `es_EC`, `es_GT`, `es_MX`, `es_PE`, `es_PR` | | ||
| | Swedish (`sv`) | `sv_SE` | — (default only) | | ||
| | Thai (`th`) | `th_TH` | — (default only) | | ||
| | Turkish (`tr`) | `tr_TR` | — (default only) | | ||
| | Ukrainian (`uk`) | `uk_UA` | — (default only) | | ||
| | Vietnamese (`vi`) | `vi_VN` | — (default only) | | ||
| | Chinese (`zh`) | `zh_CN` | — (default only) | | ||
| | Chinese (`zh`) | `zh_TW` | — (default only) | | ||
|
|
||
| ### express | ||
| | Language | Default locale | Regional variation locales | | ||
| |---|---|---| | ||
| | Danish (`da`) | `da_DK` | — (default only) | | ||
| | German (`de`) | `de_DE` | `de_AT`, `de_LU`, `de_CH` | | ||
| | English (`en`) | `en_GB` | — (default only) | | ||
| | English (`en`) | `en_US` | `en_BE`, `en_CA`, `en_EG`, `en_GR`, `en_HK`, `en_IN`, `en_ID`, `en_IE`, `en_IL`, `en_KE`, `en_KW`, `en_LU`, `en_MY`, `en_MU`, `en_NZ`, `en_NG`, `en_PH`, `en_QA`, `en_SA`, `en_SG`, `en_ZA`, `en_TH`, `en_AE`, `en_VN` | | ||
| | Finnish (`fi`) | `fi_FI` | — (default only) | | ||
| | French (`fr`) | `fr_FR` | `fr_BE`, `fr_CA`, `fr_LU`, `fr_CH` | | ||
| | Indonesian (`id`) | `id_ID` | — (default only) | | ||
| | Italian (`it`) | `it_IT` | `it_CH` | | ||
| | Japanese (`ja`) | `ja_JP` | — (default only) | | ||
| | Korean (`ko`) | `ko_KR` | — (default only) | | ||
| | Norwegian Bokmål (`nb`) | `nb_NO` | — (default only) | | ||
| | Dutch (`nl`) | `nl_NL` | `nl_BE` | | ||
| | Portuguese (`pt`) | `pt_BR` | — (default only) | | ||
| | Spanish (`es`) | `es_ES` | `es_AR`, `es_CL`, `es_CO`, `es_CR`, `es_EC`, `es_GT`, `es_MX`, `es_PE`, `es_PR` | | ||
| | Swedish (`sv`) | `sv_SE` | — (default only) | | ||
| | Chinese (`zh`) | `zh_CN` | — (default only) | | ||
| | Chinese (`zh`) | `zh_TW` | — (default only) | | ||
|
|
||
| ### adobe-home | ||
| | Language | Default locale | Regional variation locales | | ||
| |---|---|---| | ||
| | Czech (`cs`) | `cs_CZ` | — (default only) | | ||
| | Danish (`da`) | `da_DK` | — (default only) | | ||
| | German (`de`) | `de_DE` | `de_AT`, `de_LU`, `de_CH` | | ||
| | English (`en`) | `en_US` | `en_AU`, `en_BE`, `en_CA`, `en_EG`, `en_GR`, `en_HK`, `en_IN`, `en_ID`, `en_IE`, `en_IL`, `en_KW`, `en_LU`, `en_MY`, `en_NZ`, `en_NG`, `en_PH`, `en_QA`, `en_SA`, `en_SG`, `en_ZA`, `en_TH`, `en_AE`, `en_VN` | | ||
| | Finnish (`fi`) | `fi_FI` | — (default only) | | ||
| | French (`fr`) | `fr_FR` | `fr_BE`, `fr_CA`, `fr_LU`, `fr_CH` | | ||
| | Hungarian (`hu`) | `hu_HU` | — (default only) | | ||
| | Indonesian (`id`) | `id_ID` | — (default only) | | ||
| | Italian (`it`) | `it_IT` | `it_CH` | | ||
| | Japanese (`ja`) | `ja_JP` | — (default only) | | ||
| | Korean (`ko`) | `ko_KR` | — (default only) | | ||
| | Norwegian Bokmål (`nb`) | `nb_NO` | — (default only) | | ||
| | Dutch (`nl`) | `nl_NL` | `nl_BE` | | ||
| | Polish (`pl`) | `pl_PL` | — (default only) | | ||
| | Portuguese (`pt`) | `pt_BR` | — (default only) | | ||
| | Russian (`ru`) | `ru_RU` | — (default only) | | ||
| | Spanish (`es`) | `es_ES` | `es_AR`, `es_CL`, `es_CO`, `es_CR`, `es_EC`, `es_GT`, `es_MX`, `es_PE`, `es_PR` | | ||
| | Swedish (`sv`) | `sv_SE` | — (default only) | | ||
| | Thai (`th`) | `th_TH` | — (default only) | | ||
| | Turkish (`tr`) | `tr_TR` | — (default only) | | ||
| | Ukrainian (`uk`) | `uk_UA` | — (default only) | | ||
| | Vietnamese (`vi`) | `vi_VN` | — (default only) | | ||
| | Chinese (`zh`) | `zh_CN` | — (default only) | | ||
| | Chinese (`zh`) | `zh_TW` | — (default only) | | ||
|
|
||
| ### commerce | ||
| | Language | Default locale | Regional variation locales | | ||
| |---|---|---| | ||
| | Czech (`cs`) | `cs_CZ` | — (default only) | | ||
| | Danish (`da`) | `da_DK` | — (default only) | | ||
| | German (`de`) | `de_DE` | `de_AT`, `de_LU`, `de_CH` | | ||
| | English (`en`) | `en_US` | `en_AU`, `en_BE`, `en_CA`, `en_EG`, `en_GR`, `en_HK`, `en_IN`, `en_ID`, `en_IE`, `en_IL`, `en_KW`, `en_LU`, `en_MY`, `en_NZ`, `en_NG`, `en_PH`, `en_QA`, `en_SA`, `en_SG`, `en_ZA`, `en_TH`, `en_AE`, `en_VN` | | ||
| | Finnish (`fi`) | `fi_FI` | — (default only) | | ||
| | French (`fr`) | `fr_FR` | `fr_BE`, `fr_CA`, `fr_LU`, `fr_CH` | | ||
| | Hungarian (`hu`) | `hu_HU` | — (default only) | | ||
| | Indonesian (`id`) | `id_ID` | — (default only) | | ||
| | Italian (`it`) | `it_IT` | `it_CH` | | ||
| | Japanese (`ja`) | `ja_JP` | — (default only) | | ||
| | Korean (`ko`) | `ko_KR` | — (default only) | | ||
| | Norwegian Bokmål (`nb`) | `nb_NO` | — (default only) | | ||
| | Dutch (`nl`) | `nl_NL` | `nl_BE` | | ||
| | Polish (`pl`) | `pl_PL` | — (default only) | | ||
| | Russian (`ru`) | `ru_RU` | — (default only) | | ||
| | Spanish (`es`) | `es_ES` | `es_AR`, `es_CL`, `es_CO`, `es_CR`, `es_EC`, `es_GT`, `es_MX`, `es_PE`, `es_PR` | | ||
| | Swedish (`sv`) | `sv_SE` | — (default only) | | ||
| | Thai (`th`) | `th_TH` | — (default only) | | ||
| | Turkish (`tr`) | `tr_TR` | — (default only) | | ||
| | Ukrainian (`uk`) | `uk_UA` | — (default only) | | ||
| | Vietnamese (`vi`) | `vi_VN` | — (default only) | | ||
| | Chinese (`zh`) | `zh_CN` | — (default only) | | ||
| | Chinese (`zh`) | `zh_TW` | — (default only) | |
There was a problem hiding this comment.
we should probably locate the source of truth directly in locale.js, to avoid duplication / integrity issues
Files were previously under .claude/ (skipped by prettier's default dot-dir ignore); now checked at skill/, so normalize tables, emphasis, and list indentation to satisfy the Check Formatting CI.
Type
in Claude or ChatGPT.install http://mas.adobe.com/docs/mas-author skillResolves https://jira.corp.adobe.com/browse/MWPW-198143
QA Checklist: https://wiki.corp.adobe.com/display/adobedotcom/M@S+Engineering+QA+Use+Cases
Please do the steps below before submitting your PR for a code review or QA
🧪 Nala E2E Tests
Nala tests run automatically when you open this PR.
To run Nala tests again:
run nalalabel to this PR (in the right sidebar)To stop automatic Nala tests:
run nalalabelTest URLs: